首页 > 解决方案 > Windows 服务无法访问网络位置 (UNC) 路径

问题描述

我有一个 Windows 服务,它不断轮询文件夹中的新文件。对于本地目录,这工作正常。但是当涉及到同一网络中另一个系统上的 UNC 路径时,该服务似乎无法访问该文件夹。我已经参考了这个发布https://serverfault.com/a/881272;它声明我需要以当前登录的用户身份运行服务。我应该怎么做?

我希望使用该服务监控的路径是

\DESKTOP-PC\Users\me\myfolder

请指教

更新:

我使用 topshelf 开发了该服务。我想轮询同一网络中另一台本地计算机上的文件夹。我去网络地方,双击计算机名,它要求提供凭据,我输入远程计算机的用户名和密码我可以访问该用户系统上的文件(在资源管理器中)。

现在,当我将服务设置为在本机下以本地计算机用户身份运行时,它无法访问可使用资源管理器访问的远程 UNC 路径。我尝试将其安装为远程计算机用户,但失败了。

myService.exe install -username:DESKTOP-REMOTE\myname -password:mypassword

标签: c#.netnetworkingunctopshelf

解决方案


如果您尝试在该desktop-remote\myname帐户下运行您的服务,您可能会失败。本地机器只喜欢属于自己的帐户。

我要做的就是扭转局面。使远程计算机共享一个文件夹以供您的计算机轮询。这样远程机器就可以控制它发布的数据,就像一个对象的属性是privateor一样public。如果您可以让知道地址的任何人\\desktop-remote\my-not-so-secret-folder\都可以阅读它,请将其设置为任何人都可以阅读。如果您比较隐秘,请在文件夹后面加上 $ 后缀,如下所示:\\desktop-remote\my-secret-folder$。现在它不可见但仍然可以访问。
您还可以创建一个有权访问所述文件夹的特殊帐户。

然后,您让您的服务在本地计算机上运行您选择的任何帐户(具有网络访问权限)。让它尝试使用特殊帐户连接到远程文件夹。

(我以艰难的方式了解到,读取共享文件夹在没有域的机器和域中的机器之间略有不同;任何人都可以读取的方法不起作用。至少在 WindowsXP 中是这样的。从那时起我就有了不需要共享文件夹。)

高温高压


推荐阅读