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

时间:2011-05-02 17:31:42

标签: c# com windows-services out-of-process

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

任何人都可以了解这里发生的事情,更具体地说,我如何让进程外服务器作为服务用户运行。我已经检查了任务管理器,并且根据任务管理器,exe作为与服务相同的用户(在同一会话中)运行。

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

1 个答案:

答案 0 :(得分:1)

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