服务无法访问映射的驱动器

时间:2010-05-04 06:32:56

标签: windows-services process mapped-drive security-context

我在许多论坛中都读到,由于没有用户登录,因此无法从服务访问映射驱动器。

问题1)我尝试将我的服务作为登录 - 作为某个帐户,我将我的网络驱动器映射到该帐户中。该服务仍然无法访问它。为什么呢?

问题2)从同一个服务中,我调用另一个进程。该流程在哪个用户帐户下运行?

由于

3 个答案:

答案 0 :(得分:4)

1)改为使用UNC路径,然后您不需要访问映射的驱动器号。至于为什么即使在同一个帐户中运行也无法访问它们,如果没有看到您的实际代码,很难肯定。

2)这取决于你如何启动这个过程。如果您使用ShellExecute()CreateProcess(),则它会在调用线程的用户帐户中运行。如果您使用CreateProcessAsUser()CreateProcessWithLogonW()CreateProcessWithTokenW(),则会在您传入的用户帐户中运行。

答案 1 :(得分:1)

我遇到了类似的问题,在服务模式下运行JBoss,即使我将“登录为:”选项更改为已映射驱动器的同一用户,我的Java代码也无法访问映射驱动器

然后我发现如果我可以使用相同的服务映射驱动器,那么它应该可以工作。

最后,在service.bat文件顶部添加一个简单的命令解决了这个问题。

net use x: \\SERVERNAME\SHARENAME

答案 2 :(得分:0)

服务无权访问XP及更高版本上的映射驱动器,因为映射驱动器是每用户资源,因此它们取决于谁登录。由于没有人可以登录,因此可能存在没有映射驱动器。

您的服务可能会映射驱动器本身。

相关问题