Ich habe eine Liste von SIDs aus der Registrierung gelesen, .Der beste Weg, um den Benutzernamen nach SID aufzulösen?
Wie würde man den angezeigten Benutzernamen (z. B. DOMAIN\user
, BUILT-IN\user
) angesichts der SID-Zeichenfolge in C# auflösen?
Ich habe eine Liste von SIDs aus der Registrierung gelesen, .Der beste Weg, um den Benutzernamen nach SID aufzulösen?
Wie würde man den angezeigten Benutzernamen (z. B. DOMAIN\user
, BUILT-IN\user
) angesichts der SID-Zeichenfolge in C# auflösen?
Die Win32-API-Funktion LookupAccountSid()
wird verwendet, um den Namen zu finden, der einer SID entspricht.
LookupAccountSid()
hat die folgende Signatur:
BOOL LookupAccountSid(LPCTSTR lpSystemName, PSID Sid,LPTSTR Name, LPDWORD cbName,
LPTSTR ReferencedDomainName, LPDWORD cbReferencedDomainName,
PSID_NAME_USE peUse);
MSDN Ref.
Hier ist die P/Invoke Referenz (mit Beispielcode): http://www.pinvoke.net/default.aspx/advapi32.LookupAccountSid
[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError = true)]
static extern bool LookupAccountSid (
string lpSystemName,
[MarshalAs(UnmanagedType.LPArray)] byte[] Sid,
StringBuilder lpName,
ref uint cchName,
StringBuilder ReferencedDomainName,
ref uint cchReferencedDomainName,
out SID_NAME_USE peUse);
fand es einfach auf den pinvoke.net.
Alternative Managed API: Erhältlich in .Net 2.0:
using System.Security.Principal;
// convert the user sid to a domain\name
string account = new SecurityIdentifier(stringSid).Translate(typeof(NTAccount)).ToString();
Diese Lösung ist nicht in allen Situationen zuverlässig. Es gibt manchmal SIDs, die nicht übersetzt werden können, und dies wird eine Ausnahme auslösen. Ich habe LookupAccountSid() als zuverlässiger gefunden. –
Gibt es eine andere Möglichkeit, es zu tun, ohne p mit/aufrufen in C#? –
@DennisC können Sie es ohne P/Invoke tun. Bitte sehen Sie meine Antwort: http://StackOverflow.com/questions/7593005/convert-sid-to-username-in-c-sharp/7593200 –
@EriawanKusumawardhono Ich denke, Sie können die Fragen nicht sehr gut lesen. Weil sie genau entgegengesetzt sind API –