如何让 Windows 服务能够访问共享网络文件夹?

问题描述 投票:0回答:2

我有一个将在客户端服务器上运行的 Windows 服务。此服务需要访问位于不同共享文件夹(Y:\ 和 Z:\)中的 2 个文件夹,这些文件夹位于不同的计算机上(总共 3 台计算机)。

目前该服务只能查看位于同一台计算机上的文件。当我对共享文件夹执行 IO.Directory.Exists() 时,它返回 false。

以下是我尝试过的事情:

  1. 作为网络服务运行
  2. 作为本地系统运行
  3. 作为本地服务运行
  4. 测试 \192.168.1.xx\path o old
  5. 是否存在
  6. 用 Y:\ 和 Z:\
  7. 测试存在性
  8. 在其他计算机上使用相同的用户名和密码创建用户
  9. 验证文件夹是否授予所有人完全访问权限

还没有任何效果,非常感谢任何帮助。

windows network-programming service directory shared
2个回答
0
投票

在Active Directory环境中,网络服务和本地系统都可以通过网络访问域中的其他计算机;服务器只需配置为授予对域中客户端计算机帐户(即

COMPUTERNAME$
帐户)的访问权限。 如果您使用 UNC 路径,将自动建立连接。 您仍然无法使用在另一个登录会话中建立的驱动器号,但在大多数情况下,UNC 路径就可以了。

在独立环境中,这有点棘手。 唯一可靠的方法是显式建立网络连接,您可以使用 WNetAddConnection2 或任何各种替代方案来完成此操作。 (或者,如果您无法调用 Win32 API,则可以使用

net use
命令。)无论哪种情况,一旦建立连接,您就可以使用 UNC 路径。 通常不需要映射驱动器号。

如果出于某种原因必须有驱动器号,通常最好使用WNetUseConnection函数而不是WNetAddConnection2。 可以配置为自动选择驱动器号,因此您不必尝试找出哪些字母已在使用中。

请注意,根据具体情况,可能需要使用服务器上帐户的用户名的长格式,即

SERVERNAME\USERNAME
DOMAINNAME\USERNAME
(如果是域帐户)。 由于某种原因,Windows 10 客户端似乎对此特别挑剔。


0
投票

指定一个活动目录用户来启动我的一项服务。 该服务正确启动,但当启动与该服务关联的任务时,该服务无法访问同一域中另一台服务器上的网络共享文件夹,即使用户具有访问该文件夹的必要权限。

有没有办法让该服务访问网络上的共享文件夹? 不授权整个服务器(例如NAME$)?

谢谢您的帮助

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.