Je parcourt un répertoire réseau et tente de générer les noms d'utilisateur/groupe (autorisations) associés à chaque fichier/dossier. Je récupère le SID mais je veux que les noms comme "group_test" et non "S-1-5-32-544". Voici mon code -Convertir les SID en noms d'utilisateur/groupes?
var files = Directory.GetFiles(path, "*.*", SearchOption.TopDirectoryOnly);
foreach (var f in files2)
{
var fileInfo = new FileInfo(f);
var fs = fileInfo.GetAccessControl(AccessControlSections.Access);
foreach (FileSystemAccessRule rule in fs.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount)))
{
var value = rule.IdentityReference.Value;
Response.Write(string.Format("File: {0} \t Usergroup: {1} <br/>", fileInfo.Name, value));
} }
Je reçois SID du code ci-dessus mais dans la boucle foreach, si j'utilise cette place -
(NTAccount)((SecurityIdentifier)rule.IdentityReference).Translate(typeof(NTAccount)).Value
Je reçois cette exception - Some or all identity references could not be translated.
Il apparaît que la méthode Translate ne fonctionne pas sur les partages distants. Comment puis-je récupérer les vrais noms des SID? Le serveur distant n'a pas LDAP.
Merci.