2013-02-27 45 views
1

我有一個C#控制檯應用程序正在創建一個目錄,然後嘗試爲該目錄提供修改訪問權給域用戶。該應用程序長時間工作正常,但突然間它開始在DirectorySecurity.SetAccessControl方法上拋出UnauthorizedAcccesException當用戶擁有完全控制權時,在DirectorySecurity.SetAccesesControl上發生UnauthorizedAcccesException

我已經使用WindowsIdentity.GetCurrent獲得了當前的用戶帳戶,並確認它是我期望的帳戶(因爲登錄的用戶不具有足夠的訪問權限,所以模擬高級用戶)。我已經在創建的目錄上檢查了高級用戶的權限,並且他們完全控制了它。

private DirectoryInfo CreateFolderWithOpenAccess(string directoryPath) 
{ 
    DirectoryInfo directory = Directory.CreateDirectory(directoryPath); 
    DirectorySecurity directorySecurity = directory.GetAccessControl(); 

    if (!HasModifyAccess(directory)) 
    { 
    directorySecurity.AddAccessRule(
     new FileSystemAccessRule(
     Settings.Default.DomainUsers, 
     FileSystemRights.Modify, 
     InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, 
     PropagationFlags.None, 
     AccessControlType.Allow 
    ) 
    ); 

    directory.SetAccessControl(directorySecurity); 
    } 

    return directory; 
} 

有沒有人對我應該檢查什麼有什麼建議以確保我沒有遺漏任何東西?任何其他方式做到這一點?

回答

0

我檢查了我們IT部門的人,他們提醒我我創建的文件夾是使用網絡文件共享訪問的。事實證明,即使帳戶對共享中的所有文件和文件夾具有「完全控制」權限,但由於它沒有共享級別的「完全控制」權限,因此無法訪問更改權限。造成這種情況的原因是我們的數據服務器上的文件夾進行了混洗,其中一個IT人員重新創建了共享,但未重新創建帳戶的「完全控制」權限。

  1. 打開屬性共享文件夾
  2. 點擊「共享」標籤
  3. 點擊「高級共享」
  4. 點擊一下權限「
  5. :共享權限可以通過發現
  6. 確保帳戶具有「完全控制」
相關問題