2010-10-11 35 views
7

J'utilise le serveur Windows 2003, et j'ai besoin d'informations sur le dossier de sécurité, en utilisant C# par programmation.Obtenir la liste des droits d'accès groups-users-permissions-special pour un dossier dans Windows 2003, par programme

Je veux créer un outil pour les autorisations de vérification. Je dois obtenir les groupes, les utilisateurs, les permissions et les autorisations spéciales pour un dossier,

C: \ Documents and Settings \ All Users \ Application Data \ Microsoft \ Crypto \ RSA \ MachineKeys

edit:

Ce qui suit est un exemple de code pour la méthode GetSecurityDescriptorSddlForm.

public static string GetObjectPermission(string fullFolderName) 
{ 
    FileSecurity fileSecure = File.GetAccessControl(fullFolderName); 
    StringBuilder acer = new StringBuilder(); 
    fileSecure.GetSecurityDescriptorSddlForm(AccessControlSections.All); 

    foreach (FileSystemAccessRule ace in fileSecure.GetAccessRules(true, true, typeof(NTAccount))) 
    { 
     acer.Append(ace.FileSystemRights + ":" + ' ' + ace.IdentityReference.Value + "\n"); 
    } 
    return acer.ToString(); 
} 

Ce code exemple vous montrera que NTAccount pouvez modifier ou lire le dossier, comme cette fonction.

Comment puis-je obtenir des groupes et des permissions spéciales?

N'importe quel exemple de code, des suggestions?

+0

Quand vous dites « Obtenir les autorisations spéciales » voulez-vous savoir exactement si elles ont, ou ce qu'ils ont réellement sont? – Gray

+1

Je veux savoir si elles ont réellement quelles autorisations. – Kiquenet

+0

Ah, d'accord. Parce qu'il est facile de dire si elles seraient cocher ces cases dans l'Explorateur Windows pour les autorisations spéciales, car il renvoie un nombre négatif. Mais il est un peu plus compliqué d'associer chaque partie de ce nombre aux permissions. – Gray

Répondre

2

Pourriez-vous utiliser DirectoryInfo pour obtenir les listes de contrôle d'accès? Tout ACL devrait être là-bas (utilisateur, groupe):

 // Create a new DirectoryInfo object. 
     DirectoryInfo dInfo = new DirectoryInfo(FileName); 

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

docs complet: http://msdn.microsoft.com/en-us/library/c1f66bc2(v=vs.110).aspx