繁体   English   中英

Windows 服务无法访问。网络位置 (UNC) 路径

[英]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
  1. 在Windows服务器上打开“控制面板”>“管理工具”>“服务”窗口。
  2. 停止你的Windows服务。
  3. 打开“属性”>“登录”对话框。
  4. 将服务用户帐户更改为目标用户帐户。
  5. 开始你的服务。

在此输入图像描述

如果您正在Visual Studio中开发该服务,并且想要模拟其他帐户,您还可以按shift +右键单击devenv.exe并单击“以不同用户身份运行”。

还要确保指定文件夹的完整路径,并确保您使用的帐户具有该文件夹的完全权限。

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

我要做的就是转过身来。 使远程计算机共享一个文件夹供您的计算机轮询。 这样,远程机器就可以控制它发布的数据,就像对象的privatepublic属性一样。 如果你没有知道地址\\\\desktop-remote\\my-not-so-secret-folder\\能够读取它的人,那么设置它以便任何人都可以阅读。 如果你更隐秘,请将文件夹后缀为$ like: \\\\desktop-remote\\my-secret-folder$ 现在它不是可见但仍然可以到达。
您还可以创建一个可以访问所述文件夹的特殊帐户。

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

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

HTH

我在 Azure 云中的 UNC 存储遇到了这个问题。 有效的是在 windows 凭据管理器中设置凭据:

windows 凭证管理员

您可以从 Azure 门户获取连接字符串。

这解决了我们的问题。

将服务设置为以本地系统帐户运行时,它无法访问使用本地计算机帐户的资源管理器可访问的远程UNC路径。

只是因为资源管理器管理登录的用户凭据,因此,您只将UNC路径凭据添加到LOGGED用户。

将其更改为本地系统帐户时,不会存储共享的用户凭据。

尝试创建没有密码过期的本地用户,然后启用它访问共享。

您需要做的就是在注册这个新帐户的情况下设置Windows服务。

安全

你可以看一下模拟。 此外,如果服务作为本地用户运行,则有助于在文件夹所在的计算机上创建具有类似密码的同一用户。

看看这里(这篇文章中的OP遇到了同样的问题,并且他/她已经给出了共享文件夹“Everyone访问完全控制”。

https://serverfault.com/questions/177139/windows-service-cant-access-network-share

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM