Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

csharp:sidtostring

objectSids in Strings umwandeln

private string ConvertByteToStringSid(byte[] Sid)
        {
            string ReturnString = "S-";
            int CountSubProviders = Sid[1];
 
            string Revision = Sid[0].ToString();
            string IdentifierAuthority = ((long)(((long)Sid[2] << 40) + ((long)Sid[3] << 32) + ((long)Sid[4] << 24) + ((long)Sid[5] << 16) + ((long)Sid[6] << 8) + (long)Sid[7])).ToString();
 
            ReturnString += Revision + "-" + IdentifierAuthority;
            ulong b1, b2, b3, b4, bSum;
 
            for (int i = 0; i < CountSubProviders; i++)
            {
                b1 = (ulong)Sid[8 + (4 * i)];
                b2 = (ulong)Sid[9 + (4 * i)] << 8;
                b3 = (ulong)Sid[10 + (4 * i)] << 16;
                b4 = (ulong)Sid[11 + (4 * i)] << 24;
                bSum = b1 + b2 + b3 + b4;
                ReturnString += "-" + bSum.ToString();
            }
 
            return ReturnString;
        }

Wenn man in C# das AD-Attribut objectSID ausliest, erhält man lediglich einen byte-Array als Rückgabewert. Dies ist lediglich die interne Darstellung, die man mithilfe der oben angegebenen Funktion in das bekanntere String-Format 1) umwandeln kann.

Hintergrundinformationen zum Thema objectSid finden sich hier.

1)
Beispiel S-1-5-21-4536772-445536212-334526-977
csharp/sidtostring.txt · Zuletzt geändert: 2016/04/02 00:48 (Externe Bearbeitung)