tec*_*hno 4 .net c# networking unc topshelf
我有一个 Windows 服务,它不断轮询文件夹中的新文件。对于本地目录,这工作正常。但是当涉及到同一网络中另一个系统上的 UNC 路径时,该服务似乎无法访问该文件夹。我已经参考了这个发布https://serverfault.com/a/881272;它指出我需要以当前登录的用户身份运行该服务。我该怎么做?
我希望使用该服务进行监控的路径是
\DESKTOP-PC\Users\me\myfolder
Run Code Online (Sandbox Code Playgroud)
请指教
更新:
我已经使用 topshelf 开发了服务。我想轮询同一网络中另一台本地计算机上的文件夹。我去网上邻居,双击计算机名,它要求提供凭据,我输入远程计算机的用户名和密码我可以访问该用户系统上的文件(在资源管理器中)。
现在,当我将服务设置为在本机下以本地机用户身份运行时,它无法访问使用资源管理器可访问的远程 UNC 路径。我尝试将其安装为远程机用户,但失败了。
myService.exe install -username:DESKTOP-REMOTE\myname -password:mypassword
Run Code Online (Sandbox Code Playgroud)
如果您正在 Visual Studio 中开发服务,并且想要模拟不同的帐户,您还可以按 Shift + 鼠标右键单击 devenv.exe,然后单击“以不同用户身份运行”。
另请确保您指定了该文件夹的完整路径,并且您使用的帐户对该文件夹具有完全权限。
如果您尝试在该desktop-remote\myname帐户下运行您的服务,您可能会失败。本地机器只喜欢属于自己的帐户。
我要做的就是扭转局面。使远程计算机共享一个文件夹供您的机器轮询。这样远程机器就可以控制它发布的数据,就像一个对象的属性为privateor 一样public。如果您\\desktop-remote\my-not-so-secret-folder\同意让知道地址的任何人都可以阅读它,请将其设置为任何人都可以阅读。如果您比较隐秘,请在文件夹后添加 $ 像这样:\\desktop-remote\my-secret-folder$。现在它不可见,但仍然可以访问。
您还可以创建一个可以访问该文件夹的特殊帐户。
然后您让您的服务在您的本地机器上运行您选择的任何帐户(具有网络访问权限)。让它尝试使用特殊帐户连接到远程文件夹。
(我已经知道,在没有域的机器和域中的机器之间读取共享文件夹的方式很困难;任何人都可以读取的方法不起作用。至少在 WindowsXP 中是这样的。从那时起我就有了不需要共享文件夹。)
HTH