2012-10-24 42 views
-2

給定一個文件,我需要列出所有使用C#和.NET框架4讀取該文件的用戶。不想添加或列出任何其他權限。 假設該目錄是本地目錄,本地用戶就足夠了。如何檢查使用C#的文件的讀取訪問權限

+5

http://www.whathaveyoutried.com/ –

+0

這是所有的用戶在整個域,或只是本地用戶,或任何有權訪問本地文件系統,共享,Web服務器,FTP或什麼的人? –

+0

剛剛編輯了這個問題。本地目錄和本地用戶。只需右鍵單擊文件並檢查安全性即可獲得。 – martincho

回答

0

我不確定是否有簡單的方法來獲取該列表,但這裏有一個想法。您可以循環訪問控制規則並檢查哪些用戶可以讀取文件。注意一些規則允許訪問而其他人拒絕它。這裏有一個出發點:

using System.IO; 
using System.Security.AccessControl; 

... 

FileSecurity security = File.GetAccessControl(@"C:\MyFolder\My File.txt"); 

AuthorizationRuleCollection acl = security.GetAccessRules(
    true, true, typeof(System.Security.Principal.NTAccount)); 
foreach (FileSystemAccessRule ace in acl) 
{ 
    var user = ace.IdentityReference.Value; 
    var rights = ace.FileSystemRights; 
    var allowOrDeny = ace.AccessControlType; 
    // ... 
} 

檢查FileSystemAccessRule瞭解更多信息。

+0

Yeap,事情是我見過很多關於如何添加/刪除權限的例子,但是我找不到一個關於如何添加/刪除權限的例子。 – martincho

+0

@martincho我發佈的例子是關於檢索它們。我不知道是否有更直接的方法,但處理ACL列表聽起來是可行的。 – alf