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

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

有哪些选择?

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相关问答推荐

MassTransit RespondAsync 无法返回空值

信号量的多线程问题

如何规范机器之间连字符的排序顺序?

作者主签名的时间戳发现了一个建链问题:UntrustedRoot: self-signed certificate in certificate chain

我应该将 ILogger、ILogger、ILoggerFactory 或 ILoggerProvider 作为库吗?

.NET Framework SDK 和 Targeting 包有什么区别

EF Core 添加迁移构建失败

软件包版本始终为 1.0.0,带有 dotnet pack

在 web api 控制器(.net 核心)中使用 async/await 或任务

如何根据新的安全策略在 .Net 中发送邮箱?

这在技术上是“Hello World”的 O(1) 算法吗?

IIS Express - 500.19 无法读取配置文件 - 因为它正在查看错误的路径

将枚举转换为字符串

Visual Studio 2015 中的共享项目和类库有什么区别?

Web API 2:如何在对象及其子对象上返回带有驼峰式属性名称的 JSON

为什么这个字符串的长度比它的字符数长?

如何从控制台应用程序中的 Task.WaitAll() 获取返回值?

Dapper 是否支持 SQL 2008 表值参数?

3 个长整数的平均值

如何在 C# 中直接执行 SQL 查询?