2015-07-28 47 views
1

我們的客戶端項目中有一個場景,客戶端應用程序將其保存並嘗試從共享文件夾位置(這是一個虛擬共享文件夾)中獲取文件。但是我們一直面臨着特定應用程序用戶標識無法訪問該共享文件夾的問題。因此,如果該共享文件夾位置上的該用戶標識存在訪問權限,則需要事先檢查幫助。所以想着在C#或vb.net中開發一個應用程序來檢查用戶訪問。如何檢查特定用戶是否有權訪問使用C#的共享文件夾位置

+0

請記住「共享」權限和「文件系統」權限之間的區別。您需要同時獲得訪問權限,並且取決於您的組織遵守既定約定的規定而變得相當複雜。 – banging

回答

2

我相信最好檢查權限的方式,就是嘗試訪問目錄(讀/寫/列表)& catch unauthorized access error。

如果你想檢查權限,下面的代碼應該滿足你的需要。您需要爲目錄閱讀Access Rules

private bool DirectoryCanListFiles(string folder) 
{ 
    bool hasAccess = false; 
    //Step 1. Get the userName for which, this app domain code has been executing 
    string executingUser = System.Security.Principal.WindowsIdentity.GetCurrent().Name; 
    NTAccount acc = new NTAccount(executingUser); 
    SecurityIdentifier secId = acc.Translate(typeof(SecurityIdentifier)) as SecurityIdentifier; 

    DirectorySecurity dirSec = Directory.GetAccessControl(folder); 

    //Step 2. Get directory permission details for each user/group 
    AuthorizationRuleCollection authRules = dirSec.GetAccessRules(true, true, typeof(SecurityIdentifier));       

    foreach (FileSystemAccessRule ar in authRules) 
    { 
     if (secId.CompareTo(ar.IdentityReference as SecurityIdentifier) == 0) 
     { 
      var fileSystemRights = ar.FileSystemRights; 
      Console.WriteLine(fileSystemRights); 

      //Step 3. Check file system rights here, read/write as required 
      if (fileSystemRights == FileSystemRights.Read || 
       fileSystemRights == FileSystemRights.ReadAndExecute || 
       fileSystemRights == FileSystemRights.ReadData || 
       fileSystemRights == FileSystemRights.ListDirectory) 
      { 
       hasAccess = true; 
      } 
     } 
    } 
    return hasAccess; 
} 
+0

謝謝Deshdeep。但在這裏我有要求檢查特定用戶ID的訪問權限。你能幫助我做到這一點嗎? –

+0

Chechk這個。 –

+0

Ya Deshdeep。這將是很有幫助的。謝謝你soo :) –

相關問題