【问题标题】:managed way of accessing UNC path with authenticaton通过身份验证访问 UNC 路径的托管方式
【发布时间】:2015-03-02 20:07:37
【问题描述】:

使用 .net >= 4,有没有办法通过身份验证访问 UNC 路径(不使用 Win32 API)?基本上对于给定的文件夹路径,我想获取其目录列表并加载文件内容。

我找到了一个使用 Win32 API Accessing a Shared File (UNC) From a Remote, Non-Trusted Domain With Credentials 有 6 年历史的解决方案@ 有现代解决方案吗?

【问题讨论】:

  • @MethodMan 4.6 是什么 - 这个匹配 >= 4 ...
  • @MethodMan 这明确提到了 Win32 ...NetUseAdd & NetUseDel
  • 调用外部程序 (net use) 是否是可接受的“非本地”解决方案?如果不直接使用 Win32 API 或使用将 Win32 API 调用包装到托管调用中的库,就无法在代码中执行此操作(据我所知)。还有为什么限制不调用 Win32 API 调用?您是否在使用 WinRT 之类的不允许本地调用的软件?
  • 我们公司的政策是避免使用 Win32 API。

标签: c# .net windows unc


【解决方案1】:

.NET 的方法是通过模拟。以下是一些帮助您入门的链接:

How do you do Impersonation in .NET?

http://blogs.msdn.com/b/shawnfa/archive/2005/03/22/400749.aspx

如果模拟当前用户就足够了,你可以简单地使用:

using(WindowsIdentity.GetCurrent().Impersonate())
{
  // Within this block you can access the UNC share
} 

【讨论】:

  • 不鼓励仅链接答案,请在答案中包含一些内容(例如谈论WindowsImpersonationContext)。
  • -,仍然......在引擎盖下包装 Win32 API。这不是“非本地”方式!还有你的“终极”解决方案refers to Win32 also
  • @ScottChamberlain 阅读了这个问题:(不使用 Win32 API) 我知道这是“不”的意思,但这应该说清楚。
  • 我们公司的政策是避免使用 Win32 API,我不介意微软是否在后台使用它们,因为我们不必管理它。我要访问的网络共享有不同的用户名和密码
  • @surya 感谢您的澄清 - 这使得包装成为一个非常有效的解决方案!
猜你喜欢
  • 2012-08-20
  • 2018-07-23
  • 1970-01-01
  • 1970-01-01
  • 2021-09-19
  • 1970-01-01
  • 2013-06-25
  • 1970-01-01
  • 2015-09-14
相关资源
最近更新 更多