1

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

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

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

谢谢

4

3 回答 3

4

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

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

于 2010-05-04T06:52:14.260 回答
1

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

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

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

net use x: \\SERVERNAME\SHARENAME
于 2012-12-03T12:53:02.293 回答
0

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

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

于 2010-05-04T07:29:05.733 回答