一尘不染

连接到网络共享时如何提供用户名和密码

c#

当连接到当前用户(在本例中为启用网络的服务用户)没有权限的网络共享时,必须提供名称和密码。

我知道如何使用Win32函数(WNet*来自的家族mpr.dll)来执行此操作,但想使用.Net(2.0)功能来执行此操作。

有哪些选项可用?

也许更多信息可以帮助您:

  • 用例是Windows服务,而不是Asp.Net应用程序。
  • 该服务在没有共享权限的帐户下运行。
  • 共享所需的用户帐户在客户端未知。
  • 客户端和服务器不是同一域的成员。

阅读 1377

收藏
2020-05-19

共1个答案

一尘不染

您可以更改线程身份,或P
/调用WNetAddConnection2。我更喜欢后者,因为有时我需要为不同的位置维护多个凭据。我将其包装到IDisposable中,然后调用WNetCancelConnection2以删除凭据(避免出现多个用户名错误):

using (new NetworkConnection(@"\\server\read", readCredentials))
using (new NetworkConnection(@"\\server2\write", writeCredentials)) {
   File.Copy(@"\\server\read\file", @"\\server2\write\file");
}
2020-05-19