我有一个执行.bat
文件的Windows服务。此.bat
文件执行一些读取某些文件信息的Sava代码。我需要访问的文件不在运行该服务的同一台机器上。所以我应该使用像G:\
这样的映射来访问它们。
即使我运行服务时G:\
上的文件存在,文件exists()
和文件canRead()
也始终返回false。
如果我手动执行.bat
,一切都很好,但我需要使用服务执行它。
该服务正在运行,该用户有权读取此G:\
映射上的所有文件。
有没有人知道哪些是错的?当作为Windows服务运行时,为什么我无法访问这些远程文件?
有问题的操作系统是Windows XP
。
答案 0 :(得分:0)
问题通常是运行服务的用户没有相同的G:驱动器以及相同的访问权限。
我建议您以运行服务的用户身份登录,并查看该用户看到的内容。
答案 1 :(得分:0)
会话之间不共享驱动器映射,并且服务会话不会像交互式会话那样自动重新建立驱动器映射。您应该在批处理文件中放置一个net use命令,以在服务会话中显式建立驱动器映射。