Windows服务的path?

我有一个服务,我需要开始作为一个不同的用户“本地系统”

有一个用户特定的PATH我需要添加到默认path为了使服务正常工作。

默认path是A; B; C; 我已经设置了用户PATH X; 这样当用户交互地login时,有效的PATH是A; B; C; X; 这是通过设置HKEY_USERS \ XXXXXXX \ Environment \ Path来完成的

所有path都在本地硬盘上。

当服务以用户身份启动时,我可以看到它使用ProcMonsearch所需的DLL。 它只searchA; B; C; 当作为服务开始时。

我已经尝试将服务types从0x10更改为0x110这应该允许桌面交互,看看是否会加载用户环境,但似乎没有帮助。

在启动服务时,Windows是否应该加载用户的环境设置? 如果这是默认行为,是否有解决方法?

谢谢

MS有一个运行任何程序作为服务的程序 。 其中一个参数是HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<name>\Parameters\AppDirectory ,虽然这可能只适用于这些包装的服务。

这是Windows Server 2003的具体,但都一样,我认为这可能会回答你的问题: http : //support.microsoft.com/kb/887693

您是否尝试过使用SRVANY将脚本(如batch file)转换为服务,并在调出所需的应用程序之前设置环境? 注意:如果脚本背景后续进程和退出,您可能会承认服务停止/启动/重新启动控制,因为服务控制器将检查脚本本身是否“正在运行”。 您也可以考虑从脚本中的用户registry读取PATH并使用其内容,以便env在脚本本身中不被硬编码。

只是为了closures这一点。

我用通用格式写这个,因为我怀疑我正在处理一个通用的Windows服务问题。

但事实certificate,这是服务可执行的问题。 看来系统path和用户path的读取在服务可执行文件上是某种程度上的依赖关系。

我有两个来自同一供应商的服务,其中一个读取系统和用户path,而另一个读取系统path。