当连接到当前用户(在我的情况下是启用网络的服务用户)没有权限的网络共享时,必须提供名称和密码.

我知道如何使用Win32函数(来自mpr.dllWNet*系列函数)做到这一点,但是我想用.Net(2.0)功能来做到这一点.

有哪些 Select ?

Maybe some more information helps:

  • 使用 case 是Windows服务,而不是ASP.NET应用程序.
  • 该服务在一个对该共享没有权限的帐户下运行.
  • 客户端不知道共享所需的用户帐户.
  • 客户端和服务器不是同一个域的成员.

推荐答案

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

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

.net相关问答推荐

EF Core IEntityTypeConfigurations:从数据库提取数据后相关对象为空

在 F# 中处理 Option - Some(null) 的好策略是什么

如何查询 DOTNET_CLI_TELEMETRY_OPTOUT 是否永久设置为 TRUE?

.Net MAUI Android 无法与 API localhost 对话

无法加载文件或程序集 不支持操作. (来自 HRESULT 的异常:0x80131515)

如何为多种文件类型设置 FileSystemWatcher 过滤器?

如何在 FtpWebRequest 之前判断 FTP 上是否存在文件

在 .NET 反射中使用 GetProperties() 和 BindingFlags.DeclaredOnly

maxRequestLength 的最大值?

value 的默认参数必须是编译时间常数?

如何防止和/或处理 StackOverflowException?

是否可以更改 Winforms 组合框以禁用输入?

在 ToString() 之前判断 null

哪个更快:清除集合或实例化新的

在未安装 Visual Studio 的机器上使用 FUSLOGVW.EXE

如何将 XPath 与 XElement 或 LINQ 一起使用?

如何从文件中删除单个属性(例如只读)?

在 IIS 中访问 .svc 文件时出现 HTTP 404

ADO.NET Entity Framework:更新向导不会添加表

可以从 C# 调用 C++ 代码吗?