[英]Windows Service cannot access network location (UNC) Path
我有一个 windows 服务,它不断地为新文件轮询一个文件夹。对于本地目录,这工作正常。但是当涉及到同一网络中另一个系统上的 UNC 路径时,该服务似乎无法访问该文件夹。我已经提到这篇文章https://serverfault.com/a/881272 ; 它指出我需要以当前登录的用户身份运行该服务。我该怎么做?
我希望使用该服务监控的路径是
\DESKTOP-PC\Users\me\myfolder
请指教
更新:
我已经使用 topshelf 开发了该服务。我想轮询同一网络中另一台本地计算机上的文件夹。我 go 到.network places,双击计算机名,它要求提供凭据,我输入的用户名和密码远程计算机我可以为该用户访问系统上的文件(在资源管理器中)。
现在,当我将服务设置为在这台机器下以本地机器用户身份运行时,它无法访问可以使用资源管理器访问的远程 UNC 路径。我尝试以远程机器用户身份安装它,但它失败了。
myService.exe install -username:DESKTOP-REMOTE\myname -password:mypassword
如果您尝试在desktop-remote\\myname
帐户下运行服务,则可能会失败。 本地机器只喜欢属于自己的帐户。
我要做的就是转过身来。 使远程计算机共享一个文件夹供您的计算机轮询。 这样,远程机器就可以控制它发布的数据,就像对象的private
或public
属性一样。 如果你没有知道地址\\\\desktop-remote\\my-not-so-secret-folder\\
能够读取它的人,那么设置它以便任何人都可以阅读。 如果你更隐秘,请将文件夹后缀为$ like: \\\\desktop-remote\\my-secret-folder$
。 现在它不是可见但仍然可以到达。
您还可以创建一个可以访问所述文件夹的特殊帐户。
然后,您可以让您的服务在您的本地计算机上运行您选择的任何帐户(具有网络访问权限)。 让它尝试使用特殊帐户连接到远程文件夹。
(我学到了很难的方法,读取共享文件夹在域中没有域和机器的机器之间略有不同;任何人都可以读取不起作用。至少在WindowsXP中就是这样。从那时起我就一直这样。不需要共享文件夹。)
HTH
我在 Azure 云中的 UNC 存储遇到了这个问题。 有效的是在 windows 凭据管理器中设置凭据:
您可以从 Azure 门户获取连接字符串。
这解决了我们的问题。
你可以看一下模拟。 此外,如果服务作为本地用户运行,则有助于在文件夹所在的计算机上创建具有类似密码的同一用户。
看看这里(这篇文章中的OP遇到了同样的问题,并且他/她已经给出了共享文件夹“Everyone访问完全控制”。
https://serverfault.com/questions/177139/windows-service-cant-access-network-share
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.