Windows服务启动进程外COM服务器- CSIDL_APPDATA作为不同的用户路径返回

本文关键字:返回 路径 用户 APPDATA 进程 启动 服务 COM CSIDL 服务器 Windows | 更新日期: 2023-09-27 17:54:30

我有一个用c#编写的windows服务。此服务生成许多MTA线程。在每个线程中实例化一个进程外COM类。我将服务设置为以当前用户身份运行(添加适当的登录凭据)。当服务启动时,任务管理器显示它以我的用户身份运行。如果服务检查本地漫游用户目录,它将按预期返回我的用户目录。当我的COM类作为进程外exe运行时执行此检查,它返回Windows'System32'Config'systemprofile'AppData'Roaming中的路径。

谁能告诉我这里发生了什么,更具体地说,我如何让流程外服务器作为服务用户运行?我已经在任务管理器中检查过了,根据任务管理器,exe作为服务的同一用户(在同一会话中)运行。

不确定是否操作系统是一个因素,但我在Vista 32 (sp2)和Win7 64 (sp1)上都看到过这个

Windows服务启动进程外COM服务器- CSIDL_APPDATA作为不同的用户路径返回

您可以使用runa让服务器作为特定帐户运行。不是很灵活,但似乎在这里做你想做的。