Polska nazwa grupy użytkowników na podstawie SID użytkownika w c#

24-Maj-2012

Pisząc aplikację mającą działać coś w obszarze bezpieczeństwa musisz niekiedy odwołać się do nazwy grupy. Niestety, albo stety Microsoft tłumaczy nazwy grup. Stąd też aplikacja napisana na polski system operacyjny odwoła się do grupy „użytkonicy interaktywni” lub „administratorzy”. Uruchomienie tej aplikacji na angielskim systemie operacyjnym powinno posługiwać się nazwami „interactive users” lub „administrators”.

Przykłądami takich fukcji mogą być chociażby konstruktor PipeAccessRole (do nadawania uprawnień do potoku komunikacyjnego) lub funkcja Children.Find wywoływana dla obiektu DirectoryEntry (http://www.mobilo24.eu/jak-wylistowac-w-c-nazwy-kont-uzytkownikow-nalezacych-do-okreslonej-grupy/).

W takim przypadku można się posłużyć funkcja konwertującą numer SID użytkownika lub grupy na jego nazwę. O ile pewne numery SID są powszechnie znane, o tyle nazwy tych grup zmieniają się w różnych językach.

Trzeba tylko znać te popularne SID i umieć przełożyć je na nazwę. To pierwsze nie jest trudne . Pod adresem http://support.microsoft.com/kb/243330 znajduje sie lista Well Known SIDs.

Tłumaczenie SID na nazwę jest może niezbyt zrozumiałe, ale mieści się w jednej instrukcji:

string account = new System.Security.Principal.SecurityIdentifier(„S-1-5-32-544”).Translate(typeof(System.Security.Principal.NTAccount)).ToString();

Powyższa instrukcja odnajdzie nazwę grupy administratorzy, a linijka poniżej wskaże nazwę grupy „użytkownicy interaktywni”:

string account = new System.Security.Principal.SecurityIdentifier(„S-1-5-11”).Translate(typeof(System.Security.Principal.NTAccount)).ToString();

Dodaj komentarz:

Autor: Rafał Kraik