如何让windows服务访问共享网络文件夹?

如何让windows服务访问共享网络文件夹?,windows,networking,service,directory,shared,Windows,Networking,Service,Directory,Shared,我有一个将在客户端服务器上运行的windows服务。此服务需要访问位于不同共享文件夹(Y:\和Z:\)中的两个文件夹,这两个文件夹都位于不同的计算机上(总共3台计算机) 目前,该服务只能查看位于同一台计算机上的文件。在共享文件夹上执行IO.Directory.Exists()时,它返回false 以下是我尝试过的一些事情: 作为网络服务运行 作为本地系统运行 作为本地服务运行 使用\\192.168.1.xx\path\to\文件夹测试是否存在 使用Y:\和Z测试存在性:\ 在其他计算机上创建具

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

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

以下是我尝试过的一些事情:

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

  • 还没有任何工作,非常感谢任何帮助。

    在Active Directory环境中,网络服务和本地系统都可以通过网络访问域中的其他计算机;服务器只需配置为授予对域中客户端计算机帐户的访问权限,即
    COMPUTERNAME$
    帐户。如果使用UNC路径,将自动建立连接。您仍然不能使用在另一个登录会话中建立的驱动器号,但在大多数情况下,UNC路径可以

    在一个独立的环境中,这有点棘手。唯一可靠的方法是显式地建立网络连接,您可以使用或使用各种替代方法中的任何一种建立网络连接。(或者,如果无法调用Win32 API,则可以使用
    net use
    命令。)在任何一种情况下,一旦建立连接,就可以使用UNC路径。通常不需要映射驱动器号

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


    请注意,根据具体情况,可能需要为服务器上的帐户使用长格式的用户名,即
    SERVERNAME\username
    DOMAINNAME\username
    (如果是域帐户)。由于某些原因,Windows 10客户端似乎对此特别挑剔。

    在Active Directory环境中,网络服务和本地系统都可以通过网络访问域中的其他计算机;服务器只需配置为授予对域中客户端计算机帐户的访问权限,即
    COMPUTERNAME$
    帐户。如果使用UNC路径,将自动建立连接。您仍然不能使用在另一个登录会话中建立的驱动器号,但在大多数情况下,UNC路径可以

    在一个独立的环境中,这有点棘手。唯一可靠的方法是显式地建立网络连接,您可以使用或使用各种替代方法中的任何一种建立网络连接。(或者,如果无法调用Win32 API,则可以使用
    net use
    命令。)在任何一种情况下,一旦建立连接,就可以使用UNC路径。通常不需要映射驱动器号

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


    请注意,根据具体情况,可能需要为服务器上的帐户使用长格式的用户名,即
    SERVERNAME\username
    DOMAINNAME\username
    (如果是域帐户)。由于某些原因,Windows 10客户端似乎对此特别挑剔。

    除非计算机位于域中,否则最好的选择可能是使用WNetAddConnection2或类似工具显式连接服务,提供用户名和密码。我尝试过这样做,但出现了以下错误:错误\u否\u此类\u登录\u会话:指定的登录会话不存在。它可能已经被终止了。(代码:1312)我见过(在Windows 10上)当用户名未完全限定时发生这种情况,请尝试SERVERNAME\username(或DOMAIN\username,如果它是域帐户或服务器也是域控制器)。哇,这非常有效!万分感谢!如果您将其作为答案发布,则在计算机不在域中的情况下,您的最佳选择可能是该服务使用WNetAddConnection2或类似工具显式连接,并提供用户名和密码。我尝试过这样做,但出现以下错误:错误\u否\u此类\u登录\u会话:指定的登录会话不存在。它可能已经被终止了。(代码:1312)我见过(在Windows 10上)当用户名未完全限定时发生这种情况,请尝试SERVERNAME\username(或DOMAIN\username,如果它是域帐户或服务器也是域控制器)。哇,这非常有效!万分感谢!如果你把它作为答案贴出来,我会批准的