使用密码在共享文件夹中创建子文件夹
Posted
技术标签:
【中文标题】使用密码在共享文件夹中创建子文件夹【英文标题】:Create a subfolder in a shared folder with password 【发布时间】:2013-12-03 00:25:43 【问题描述】:在使用 System.IO 命名空间中的方法创建文件夹时,我在共享文件夹密码中创建文件夹时遇到问题。
例子:
CreateDirectory(@"\\host\shared_folder\new_folder");
这给了我一个错误:
登录失败:未知用户名或密码错误。
由于主机有用户名和密码,你能告诉我是否可以插入用户名和密码来使用这个命名空间中的方法创建文件夹?
【问题讨论】:
这是服务器上的标准 Windows 共享文件夹还是什么? 在一个服务器中,这个服务器包含一个共享文件夹。 在一个服务器中,这个服务器包含一个共享文件夹。 【参考方案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);
【讨论】:
你告诉我用那个代码创建文件夹: using (var impersonation = new ImpersonatedUser(decryptedUser, decryptedDomain, decryptedPassword)) Directory.CreateDirectory(newPath); 更新了答案以显示调用创建目录的位置。【参考方案2】:调用您的库的应用程序必须以具有创建文件夹所需权限的身份启动,或者您可以尝试更改调用您的代码的线程的身份,如下所示...
Set Identity of Thread
您需要考虑这样做的后果。您可能应该在 worker thread 中执行此操作。
所需的权限是另一回事。如果是文件共享,则需要考虑两组权限 - 文件共享权限和文件系统中文件夹的文件权限 DACLS。
【讨论】:
以上是关于使用密码在共享文件夹中创建子文件夹的主要内容,如果未能解决你的问题,请参考以下文章