2011-09-27 76 views
1

我想僅將一個用戶的權限分配給使用C#的窗口中的文件夾,其他用戶不應該能夠打開或更改該文件夾的訪問權限。只能將一個文件夾的訪問權限設置爲只有一個用戶

例如,如果我有3個用戶 - 用戶組中的UserA,UserB和UserC。我想授予僅訪問UserA的文件夾的權限。如果我拒絕訪問用戶組並允許UserA,則拒絕權限將優先,並且訪問UserA也將被拒絕。

解決此問題的一個方法是拒絕Userb和Userc,並允許UserA訪問該文件夾。但是如果在設置用戶帳戶創建的權限之後,則會出現問題,那麼新帳戶將擁有該文件夾的權限。我不想有這種情況。

感謝, Sujith

回答

5

ACL中沒有提到任何人的默認權限爲「無法訪問」(一種Empty DACL授權沒有訪問)。因此,請阻止文件夾從其父級繼承安全性,並僅將權限分配給UserA。

(當然,這並不能阻止管理員取得所有權,然後授予權限爲自己,沒有什麼可以阻止)


例如創建一個目錄,名爲C:\FruitBat,這只是給用戶DOMAIN\User1訪問:

System.Security.AccessControl.DirectorySecurity dacl = new System.Security.AccessControl.DirectorySecurity(); 
dacl.AddAccessRule(new System.Security.AccessControl.FileSystemAccessRule(@"DOMAIN\User1", 
    System.Security.AccessControl.FileSystemRights.FullControl, 
    System.Security.AccessControl.InheritanceFlags.ContainerInherit | 
    System.Security.AccessControl.InheritanceFlags.ObjectInherit, 
    System.Security.AccessControl.PropagationFlags.None , 
    System.Security.AccessControl.AccessControlType.Allow)); 
System.IO.Directory.CreateDirectory(@"C:\FruitBat", dacl); 
+0

所以我想設置權限在E:\。在這裏我們不會繼承任何東西。當我創建新的用戶帳戶時,該用戶帳戶正在訪問此文件夾。這不應該發生。無論如何拒絕訪問e:\。 我應該僅授予「創建驅動器e:\」(我使用SolFS創建新驅動器)的用戶權限。 謝謝。 –

+0

@Sujith Kp - 你可以在E:上創建一個'DirectoryInfo'對象,創建一個'dacl',就像我上面的例子那樣,然後你['SetAccessControl'](http://msdn.microsoft.com/en- us/library/system.io.directoryinfo.setaccesscontrol.aspx) –

+0

thanx,你動搖我! –

相關問題