```
// Convertit une chaîne SID en nom d'utilisateur/groupe.
chaîne ConvertSidToString (chaîne sid) {
essayer {
var domaine =new 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 ;
}
sinon si (Win32Native.GetLastError() ==Win32Native.ERROR_NONE_MAPPED) {
// SID fait référence à un utilisateur ou un groupe local
domaine.Append(".");
sidParsed =Win32Native.LookupAccountSid (null, sid, nom d'utilisateur, nom d'utilisateur.Capacité, domaine, domaine.Capacité, null);
si (!sidParsed) {
// En cas d'échec de LookupAccountSid pour une raison quelconque, renvoyez simplement la chaîne SID.
sidParsed =vrai ;
nom d'utilisateur.Longueur =0;
}
}
si (sidParsed) {
retourner le nom d'utilisateur.ToString();
}
autre {
renvoie null ;
}
}
attraper (Exception e) {
renvoie null ;
}
}
// Convertit un nom d'utilisateur/groupe en chaîne SID.
string ConvertStringToSid (nom de la chaîne) {
essayer {
var sid =nouvel octet[256];
var sidLength =sid.Length;
var domainName =new StringBuilder(256);
var sidParsed =faux ;
var result =Win32Native.LookupAccountName (null, nom, sid, ref sidLength, domainName, domainName.Capacity, null);
if (résultat &&sidLength> 0) {
sidParsed =vrai ;
}
si (sidParsed) {
renvoie un nouveau SecurityIdentifier(sid, 0).Value ;
}
autre {
renvoie null ;
}
}
attraper (Exception e) {
renvoie null ;
}
}
```
|