使用密码在共享文件夹中创建子文件夹

时间:2013-12-03 00:25:44

标签: c# asp.net

在使用System.IO命名空间中的方法创建文件夹时,在共享文件夹密码中创建文件夹时出现问题。

示例:

CreateDirectory(@"\\host\shared_folder\new_folder");

这给了我一个错误:

  

登录失败:未知的用户名或密码错误。

由于主机有用户名和密码,您能否告诉我是否可以使用此命名空间中的方法插入用户名和密码来创建文件夹?

2 个答案:

答案 0 :(得分:1)

您应该能够利用WindowsIdentity.Impersonate方法来模拟有权在文件共享上创建文件夹的帐户。以下包含示例代码:

WindowsIdentity.Impersonate

编辑:使用上面链接中的示例代码,您可以将CreateDirectory调用放在以下代码块中:

using (WindowsImpersonationContext impersonatedUser = WindowsIdentity.Impersonate(safeTokenHandle.DangerousGetHandle()))
{
    // Create Directory Here

    // Check the identity.
    Console.WriteLine("After impersonation: "
                        + WindowsIdentity.GetCurrent().Name);
}

答案 1 :(得分:1)

调用您的库的应用程序必须以具有创建文件夹所需权限的标识启动,或者您可以尝试更改调用代码的线程的标识,如下所示...

Set Identity of Thread

你需要考虑这样做的后果。您应该在worker thread

中执行此操作

所需的权限是另一回事。如果是文件共享,则需要考虑两组权限 - 文件共享权限和文件系统文件夹中的文件权限DACLS。