Windows 服务:我可以配置当前工作目录吗?

Tom*_*lak 14 windows configuration directory service

默认情况下,Windows 服务在 sytem32 目录(通常为C:\WINDOWS\system32)中启动。

有没有办法设置不同的工作目录?我正在考虑下面的一些注册表参数HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SomeService

那么 - 这可以做到吗?

fis*_*ion 6

您可以SetCurrentDirectory在进程启动后使用 DLL 注入进行调用。这将需要您构建一个注入器应用程序,以及要注入的 DLL。存在一些教程;我发现的两个最好的可能是:

您需要具有相当数量的 C++ 编程背景(和一个有效的构建环境)才能通过。

但是,这假定服务正在查看当前目录。另一种可能性是它正在使用%path%. 你说它“从 开始system32,尝试更多的位置,最终是它自己的目录”,所以这对我来说似乎更有可能。

将您在procmon其中看到的目录与%path%. 如果它们相同,请考虑修改运行服务的用户的SYSTEM %path%%path%,以便首先搜索您希望它搜索的目录。

我相信弗雷德是正确的,但-你不可能通过做任何的这个看到任何显著的性能优势,除非它的发生非常频繁。简单的文件打开操作并不是特别昂贵,尤其是当它是本地路径并且文件实际上不存在时。