2010-11-28 108 views
0

我在存儲文件夾權限時遇到了一些問題。我能夠找到一些關於編寫和閱讀的文檔。我想要做的是讀取特定用戶的文件夾權限>存儲>更改權限>安裝程序完成後,更改權限。C#存儲文件夾權限

我已經把它全部關閉了(只是由於許多其他代碼)除了如何存儲原始文件夾權限並將其設置回來。我會很樂意閱讀你所建議的任何材料,我們會在軟件中收到幾個致命錯誤,這是解決其中許多錯誤的一個步驟。所有的幫助,歡迎和讚賞。

下面是我如何設置權限的示例。是的,我知道我有大家,但它只是爲了測試,現在

public void setPermDir() 
    { 
     try 
     { 
      string DirectoryName = "C:\\Temp1\\"; 

      Console.WriteLine("Adding access control entry for " + DirectoryName); 

      // Add the access control entry to the directory. 
      AddDirectorySecurity(DirectoryName, @"Everyone", FileSystemRights.FullControl, AccessControlType.Allow); 


      Console.WriteLine("Done."); 
     } 
     catch (Exception e) 
     { 
      Console.WriteLine(e); 
     } 

     Console.ReadLine(); 
    } 

    // Adds an ACL entry on the specified directory for the specified account. 
    public static void AddDirectorySecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType) 
    { 
     // Create a new DirectoryInfo object. 
     DirectoryInfo dInfo = new DirectoryInfo(FileName); 

     // Get a DirectorySecurity object that represents the 
     // current security settings. 
     DirectorySecurity dSecurity = dInfo.GetAccessControl(); 

     // Add the FileSystemAccessRule to the security settings. 
     dSecurity.AddAccessRule(new FileSystemAccessRule(Account, 
                 Rights, 
                 ControlType)); 

     // Set the new access settings. 
     dInfo.SetAccessControl(dSecurity); 

    } 

回答

0

如果從AddDirectorySecurity返回DirectorySecurity dSecurity那麼你可以只調用Directory.SetAccessControl(directoryName, dSecurity);,一旦你用修改後的訪問規則進行。

更新

如果只是SetAccessControl不工作,下一步可能是顯式刪除您使用FileSystemSecurity.RemoveAccessRule授予的權限。

參考只要保持你創建FileSystemAccessRule:

FileSystemAccessRule toRemoveWhenDone = new FileSystemAccessRule(Account, Rights, ControlType); 
+0

是的,我使用的方法。我只是沒有看到如何存儲特定用戶的權限。 – 2010-11-28 19:30:25