2011-11-24 64 views
1

我有一个执行.bat文件的Windows服务。该.bat文件执行一些读取某些文件信息的Sava代码。我需要访问的文件不在服务运行的同一台计算机上。所以我应该使用像G:\这样的映射来访问它们。使用Windows服务在Windows上远程访问文件

即使我在运行服务时存在G:\上的文件,文件exists()和文件canRead()始终返回false。

如果手动执行.bat,一切正常,但我需要使用服务执行它。

该服务正在与有权读取此G:\映射上的所有文件的用户一起运行。

有没有人有什么可能是错的线索?为什么在作为Windows服务运行时无法访问这些远程文件?

有问题的操作系统是Windows XP

+1

尝试执行“\\ servername \ c $ \ path_to_bat_file”,其中c是远程计算机上的驱动器,当然必须替换为bat文件所在驱动器的名称(无映射) 。当然,这是假定所有访问权利都已到位。 servername是您用来映射驱动器的东西。 – Thomas

回答

0

问题通常是运行该服务的用户不具有相同的G:驱动器以及相同的访问权限。

我建议您以运行该服务的用户身份登录并查看该用户所看到的内容。

+0

运行服务的用户与我手动执行.bat时登录的用户相同。但是如果我在登录时运行该服务,则会遇到同样的问题。虽然,我可以通过浏览器访问G:驱动器 –

+0

您可以使用UNC路径吗? –

+0

我试过了,但没有奏效@Peter Lawrey –

0

驱动器映射不会在会话之间共享,并且服务会话不会像交互式会话那样自动重新建立驱动器映射。您应该在批处理文件中放入net use命令,以在服务会话中明确建立驱动器映射。

相关问题