2010-11-11 59 views
0

我一直试图绕过试图创建一个外部机器,驻留在同一网络上的一个文件夹导致的未经授权的访问,我已经尝试通过添加一个accessrule ,这并没有帮助我仍然得到同样的错误。认证用户创建目录在c#

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"); 

回答

0

快速的猜测是,你的申请是根据需要运行的帐户有写权限,使摆在首位这种变化的目录。

如果帐户(模拟的或专用应用程序帐户)在指定的路径内没有创建权限,则可能没有权限更改该路径上的访问规则。

可能有几种方法可以解决这个问题,但基本目标是应用程序运行的帐户需要在创建子目录时具有对父目录的写权限。

如果您的应用程序模拟用户,一种解决方案是将这些用户放入已具有权限的组中。或者,也许更安全的方法是,应用程序可以切换到已具有创建目录权限的单个应用程序帐户,仅将新目录的访问权限分配给登录用户,然后切换回登录用户帐户。另一种选择,可能是最安全的,就是提前创建目录,但我猜测这些目录不会提前知道。

如果应用程序未模拟用户,请在应用程序运行之前授予应用程序帐户访问权限。

+0

感谢您的洞察力,我又看了一下应用程序的部署位置,并意识到它是供内部使用的。所以我打开了启用写入的文件夹给网络上使用的用户组,而不是通过软件以超灵活的方式进行。 – wonea 2010-11-24 12:00:56