如何让 windows 服务访问共享网络文件夹?
How do I get a windows service to have access to a shared network folder?
我有一个 windows 服务,它将在客户端服务器上 运行。此服务需要访问位于不同共享文件夹(Y:\ 和 Z:\)中的 2 个文件夹,它们都在不同的计算机上(总共 3 台计算机)。
目前该服务只能查看位于同一台机器上的文件。当我对共享文件夹执行 IO.Directory.Exists() 时,它 returns 错误。
以下是我尝试过的东西:
- 运行 作为网络服务
- 运行 作为本地系统
- 运行 作为本地服务
- 测试存在与 \\192.168.1.xx\path\to\folder
- 用 Y:\ 和 Z:\ 测试存在性
- 在其他计算机上使用相同的用户名和密码创建用户
- 验证文件夹已授予所有人完全访问权限
还没有任何效果,非常感谢任何帮助。
在 Active Directory 环境中,网络服务和本地系统都可以通过网络访问域中的其他计算机;服务器只需要配置为授予对域中客户端计算机帐户的访问权限,即 COMPUTERNAME$
帐户。如果您使用 UNC 路径,连接将自动建立。您仍然不能使用在另一个登录会话中建立的驱动器号,但在大多数情况下,UNC 路径就可以了。
在独立环境中,这有点棘手。唯一可靠的方法是显式建立网络连接,您可以使用 WNetAddConnection2 或任何其他替代方法来实现。 (或者如果您不能调用 Win32 API,您可以 shell 输出到 net use
命令。)在任何一种情况下,一旦建立连接,您就可以使用 UNC 路径。通常不需要映射驱动器号。
如果出于某种原因必须 有驱动器盘符,通常最好使用WNetUseConnection 函数而不是WNetAddConnection2。可以自动将其配置为 select 驱动器盘符,因此您不必尝试找出哪些盘符已被使用。
请注意,根据具体情况,可能需要为服务器上的帐户使用长格式的用户名,即 SERVERNAME\USERNAME
或 DOMAINNAME\USERNAME
(如果是域帐户) . Windows 出于某种原因,10 个客户似乎对此特别挑剔。
我有一个 windows 服务,它将在客户端服务器上 运行。此服务需要访问位于不同共享文件夹(Y:\ 和 Z:\)中的 2 个文件夹,它们都在不同的计算机上(总共 3 台计算机)。
目前该服务只能查看位于同一台机器上的文件。当我对共享文件夹执行 IO.Directory.Exists() 时,它 returns 错误。
以下是我尝试过的东西:
- 运行 作为网络服务
- 运行 作为本地系统
- 运行 作为本地服务
- 测试存在与 \\192.168.1.xx\path\to\folder
- 用 Y:\ 和 Z:\ 测试存在性
- 在其他计算机上使用相同的用户名和密码创建用户
- 验证文件夹已授予所有人完全访问权限
还没有任何效果,非常感谢任何帮助。
在 Active Directory 环境中,网络服务和本地系统都可以通过网络访问域中的其他计算机;服务器只需要配置为授予对域中客户端计算机帐户的访问权限,即 COMPUTERNAME$
帐户。如果您使用 UNC 路径,连接将自动建立。您仍然不能使用在另一个登录会话中建立的驱动器号,但在大多数情况下,UNC 路径就可以了。
在独立环境中,这有点棘手。唯一可靠的方法是显式建立网络连接,您可以使用 WNetAddConnection2 或任何其他替代方法来实现。 (或者如果您不能调用 Win32 API,您可以 shell 输出到 net use
命令。)在任何一种情况下,一旦建立连接,您就可以使用 UNC 路径。通常不需要映射驱动器号。
如果出于某种原因必须 有驱动器盘符,通常最好使用WNetUseConnection 函数而不是WNetAddConnection2。可以自动将其配置为 select 驱动器盘符,因此您不必尝试找出哪些盘符已被使用。
请注意,根据具体情况,可能需要为服务器上的帐户使用长格式的用户名,即 SERVERNAME\USERNAME
或 DOMAINNAME\USERNAME
(如果是域帐户) . Windows 出于某种原因,10 个客户似乎对此特别挑剔。