Wie man die Anmelde-SID in C#
Wie macht man das abrufen der Windows-Logon-SID in C# .net? (nicht die Benutzer-SID, aber das einzigartige neue für jede Sitzung)
- Im Windwos-Umgebung, SID steht für Sicherheits-Id keine Session-Id. Erhalten Sie die Sitzungs-Id verwenden
System.Diagnostics.Process.GetCurrentProcess().SessionId
weitere details finden Sie unter meine Antwort
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich fürchte, Sie haben zu greifen, um mithilfe von P/Invoke. Es gibt ein Beispiel, wie es bei pinvoke.net (bitte siehe unten auf der Seite):
Bitte beachten Sie, dass ich geändert, die beispielsweise durch die Veränderung nur eine Zeile habe ich ersetzt
TOKEN_INFORMATION_CLASS.TokenUser
mitTOKEN_INFORMATION_CLASS.TokenSessionId
das ist genau das, was Sie brauchen.Hoffe, das hilft.
Update: Hier ist der funktioniert (zumindest auf meinem Rechner) code:
N. B. ich habe das getestet auf meinem x64-Maschine, so achten Sie auf
TokenInformation.ToInt64()
Stück code, vielleicht sollten Sie ersetzen Sie es mitTokenInformation.ToInt32()
TokenInformation.ToInt64() + i * sidAndAttrSize + IntPtr.Size
stattTokenInformation.ToInt64() + i * sidAndAttrSize + 4
angesichts der Tatsache, dass TOKEN_GROUPS.GroupCount ist ein DWORD? Ist dies gewollt? (fyi meine Frage hier: stackoverflow.com/questions/6066650)System.Sicherheit.AUFTRAGGEBER.WindowsIdentity.GetCurrent().Benutzer.AccountDomainSid - könnte den trick tun?
Ich weiß, dies ist eine alte post. Gerade lief in dieses problem, wie ich hatte, um die ICA-session-ID und die RDP-session-ID, um ein Programm zum sammeln der richtigen Variablen für jede Art von remote-Verbindung. Die aktuelle session-ID befindet sich in der Regedit HKEY_CURRENT_USER\Remote*. Ich konnte nicht finden, eine alternativen zum WTS, ich bin Entsendung meine Lösung hier.