在c#中模拟使用FolderDialog打开网络文件夹

本文关键字:网络 文件夹 FolderDialog 模拟 | 更新日期: 2023-09-27 18:12:40

我正在使用以下代码来冒充第三个用户并试图访问文件夹。

Boolean success = LogonUser("username", "domain", "password", 2, 0, out userToken);
if (success)
{
     var wi = new WindowsIdentity(userToken, "WindowsAuthentication");
    using (wi.Impersonate())
      {
         if (fbdPatches.ShowDialog() == DialogResult.OK)
         {
                 // try to access folder which can be accessed only through above credentials
         }
      }
}

我仍然无法访问文件夹。请帮我找出我在这里做错了什么。

在c#中模拟使用FolderDialog打开网络文件夹

LogonUser接受用户名、域和密码,并返回一个可以与WindowsIdentity一起使用的令牌。除了这些参数之外,LogonUser还想知道要使用哪个登录提供者(默认值对于大多数情况应该足够)和登录类型选择登录类型可能比较棘手,因此Options为

登录类型(LOGON32_LOGON_xxx) 整型值(来自WinBase.h)

LOGON32_LOGON_BATCH <</strong strong> 4>

LOGON32_LOGON_INTERACTIVE

您的问题通过使用NEW_CREDENTIALS选项登录来解决。

例如

:

Boolean success = LogonUser("username", "domain", "password", 9, 0, out userToken);

Boolean success = LogonUser("username", "domain", "password", LOGON32_LOGON_NEW_CREDENTIALS, 0, out userToken);