C# 验证用户在c中创建目录#
我一直在试图绕过由于试图在驻留在同一网络上的外部计算机上创建文件夹而导致的unauthorizedaccessexception,我尝试通过添加accessrule来解决此问题,但这无助于我仍然会遇到相同的错误C# 验证用户在c中创建目录#,c#,visual-studio-2010,C#,Visual Studio 2010,我一直在试图绕过由于试图在驻留在同一网络上的外部计算机上创建文件夹而导致的unauthorizedaccessexception,我尝试通过添加accessrule来解决此问题,但这无助于我仍然会遇到相同的错误 String thepath = @"\\WONEATEMPMACHINE\C\ExampleData\" DirectoryInfo dInfo = new DirectoryInfo(thepath); DirectorySecurity dSecurity = dInfo.GetA
String thepath = @"\\WONEATEMPMACHINE\C\ExampleData\"
DirectoryInfo dInfo = new DirectoryInfo(thepath);
DirectorySecurity dSecurity = dInfo.GetAccessControl();
dSecurity.AddAccessRule(new FileSystemAccessRule("DOMAINEXAMPLE\\wonea",
FileSystemRights.Write,
InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
PropagationFlags.None,
AccessControlType.Allow));
dInfo.SetAccessControl(dSecurity);
Directory.CreateDirectory(thepath + "\\newfolder");
一个快速的猜测是,应用程序运行的帐户首先需要有写权限才能对目录进行这样的更改 如果该帐户(不受限制的或专用的应用程序帐户)没有权限在指定的路径内创建,则它可能也没有权限更改该路径上的访问规则 可能有几种方法可以解决这个问题,但基本目标是,在创建子目录时,运行应用程序的帐户需要对父目录具有写权限 如果您的应用程序正在模拟用户,一种解决方案是将这些用户放入已具有权限的组中。或者,也可能是一种更安全的方法,即应用程序可以切换到已具有创建目录权限的单个应用程序帐户,将对新目录的访问权限仅分配给登录用户,然后切换回登录用户帐户。另一个选择,可能是最安全的,就是提前创建目录,但我猜这些不会提前全部被知道
如果应用程序不是模拟用户,请在应用程序运行之前授予应用程序帐户访问权限。感谢您的洞察力,我再次查看了应用程序的部署位置,并意识到它是供内部使用的。因此,我打开了一个文件夹,以便为网络上使用的用户组启用写功能,而不是通过软件以超级灵活的方式进行操作。