2010-11-11 68 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