2011-05-21 130 views
3

我一直在試圖找到一種方法來存儲目錄的權限。我目前使用SetACL來提供幫助。如果我可以改變目錄/註冊表的所有權而沒有它將是首選的,但這是一個不同的故事。例如:C#保存目錄權限

檢查當前所有者和該所有者的權限。更改爲按鈕單擊時的權限和所有者>單擊另一個按鈕時將其更改回原始。

爲了保存原因,我的團隊會提供技術支持。我們遠程進入電腦,執行我們的t/s並離開。我們需要能夠更改權限,然後恢復原來的狀態。

任何幫助表示讚賞。

回答

4

如果使用System.ManagementSystem.Management.Instrumentation命名空間,則可以使用Directory.GetAccessControl方法獲取誰有權訪問文件夾。然後,您可以使用AddAccessRuleSetAccessControl方法實際應用您的新權限。完成後,您可以刪除新的權限。下面是指導您如何更改文件夾的權限的文章:

http://www.redmondpie.com/applying-permissions-on-any-windows-folder-using-c/

筆者使用的基本代碼如下:

DirectoryInfo myDirectoryInfo = new DirectoryInfo(yourFolderHere); 

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

// Builds a new user string for who we want to give permissions to 
string User = System.Environment.UserDomainName + "\\" + yourUserName; 

// Creates the permissions to apply 
myDirectorySecurity.AddAccessRule(new FileSystemAccessRule(User, 
            FileSystemRights.FullControl, AccessControlType.Allow)); 

// Set the new access settings. 
myDirectoryInfo.SetAccessControl(myDirectorySecurity); 

// Showing a Success Message 
MessageBox.Show("Permissions Altered Successfully"); 
} 

至於設置主人,這裏是如何做到這一點的好SO文章:

C# - How to use DirectorySecurity.SetOwner() ? I'm having troubles

但是,如果你想設置的奧尼r是別人(因爲我認爲你不需要在用戶已經有權分配所有權的時候給用戶分配所有權),上面的這個方法是行不通的,我不相信。我找到了關於如何將所有者設置爲自己以外的人的文檔。這裏是鏈接:

http://blog.salamandersoft.co.uk/index.php/2009/10/setting-the-owner-of-files-and-directories-in-c/

+0

BiggsTRC,我會測試出你剛剛發佈的內容。感謝您提供如此多的信息!項目是週一早上到期,所以再次感謝你回來這麼快 – 2011-05-21 23:13:41

+0

@約翰安德魯斯 - 很高興能有所幫助。如果您需要幫助或卡住某處,請繼續留言。我想看到你成功。 – IAmTimCorey 2011-05-21 23:16:32

+0

好吧,我已經知道了,以便我可以更改所有者並設置權限。兩件事:1,當我設置一個帳戶的權限,它只是增加了另一個「特殊權限」,2我仍然無法存儲權限。嘗試和嘗試,但它不工作。 – 2011-05-22 05:24:32