```
// Convertit une chaîne SID en nom d'utilisateur/groupe.
chaîne ConvertSidToString (chaîne sid) {
essayer {
var domaine =nouveau StringBuilder(256);
var nom d'utilisateur =new StringBuilder(256);
var sidParsed =faux ;
var result =Win32Native.LookupAccountSid (null, sid, nom d'utilisateur, nom d'utilisateur.Capacity);
if (résultat &&nom d'utilisateur.Longueur> 0) {
sidParsed =vrai ;
}
autre {
résultat =Win32Native.LookupAccountSid (null, sid, domaine, domaine.Capacité, nom d'utilisateur, nom d'utilisateur.Capacité);
if (résultat &&nom d'utilisateur.Longueur> 0 &&domaine.Longueur> 0) {
sidParsed =vrai ;
nom d'utilisateur.Append('\\').Append(domaine);
}
}
si (sidParsed) {
return username.ToString();
}
autre {
renvoie null ;
}
}
attraper {
renvoie null ;
}
}
// Convertit un nom d'utilisateur/groupe en chaîne SID.
string ConvertStringToSid (nom de la chaîne) {
essayer {
// Alloue un tampon pour recevoir le SID. La longueur maximale est de :256 octets pour le SID
// lui-même, plus 1 octet pour le caractère nul.
var sid =nouvel octet[257];
// Alloue des tampons pour recevoir les noms d'utilisateur et de domaine. La longueur maximale est de :
// Utilisateur :20 caractères
// Domaine :80 caractères
var utilisateur =nouveau StringBuilder(20);
var domaine =new StringBuilder(80);
// Définissez le domaine et le pointeur SID sur null pour utiliser l'ordinateur actuel.
taille uint =257 ;
var réussi =Win32Native.LookupAccountName (null, nom, sid, taille de référence, utilisateur, utilisateur.Capacité, domaine, domaine.Capacité);
si (réussi) {
// Convertit le SID en chaîne à afficher.
renvoie un nouveau System.Security.Principal.SecurityIdentifier(sid, 0).Value ;
}
autre {
renvoie null ;
}
}
attraper {
renvoie null ;
}
}
```
|