[solved] GUID des aktuellen Users ermitteln
-
Wenn ich das so übernehme und es auf der Konsole ausgeben lasse, dann kommt ein leerer String dabei raus. NativeGuid gibt übrigens einen
string
zurück.Allerdings muss ich sagen, dass ich keine Ahnung habe, was der Code tut. Vielleicht ist ja ein Flüchtigkeitsfehler drin, dann bitte korrigieren, ich gehe in der Zwischenzeit mich in Klasse einlesen
Edit: Ich nehme alles zurück, es funktioniert. Aber extrem lahm, es braucht 3 Sekunden um diese GUID zu bekommen. Wieso?
Grüssli
-
was genau dauert 3 sekunden ? evtl das finden des users ?
am sonsten - gibs keine fertige funktion fuer den current user ?
-
Mr Evil schrieb:
was genau dauert 3 sekunden ? evtl das finden des users ?
Genau, die folgende Zeile braucht 3 Sekunden:
DirectoryEntry localUser = localMachine.Children.Find(Environment.UserName, "user");
Mr Evil schrieb:
am sonsten - gibs keine fertige funktion fuer den current user ?
Wäre das Beste. Nur habe ich eben keine Ahnung. Dieses Active Directory Zeug überfordert mich zudem aktuell ein wenig. Die meisten Artikel, welche ich finde, sagen nur aus, dass das Thema viel zu komplex ist und deshalb keine Erklärung erfolgt, sondern nur eine Liste von Möglichkeiten, wie man sich etwas holen kann ... toll
Grüssli
-
Dravere schrieb:
Ich suche irgendwas in der Richtung von
System.CurrentUser.GUID
oder ähnliches. Das wäre idealstring sid = WindowsIdentity.GetCurrent().User.Value;
-
@hustbaer,
Geht es bei einer SID nicht um irgendwelche Berechtigungen? Wo ist da der Zusammenhang zu einer GUID? Ist die SID von Benutzern in einem Netzwerk eindeutig?Grüssli
-
Was meinst du bitte mit "User GUID", wenn du nicht die SID meinst?
Ja, die SID ist eindeutig, das ist ja gerade der Sinn der SID.
Die SID ist bloss dann nicht eindeutig, wenn man Systeme ohne sysprep klont, und dann kein NewSID laufen lässt. Das betrifft dann die lokalen Accounts, auf System die vom selben Image erstellt wurden.p.S.: die SID wird z.B. in den ACLs (Access Control Lists) verwendet, also überall wo man Berechtigungen für Accounts, Gruppen etc. vergeben kann. Wenn's gut genug dafür ist, ist's vermutlich auch gut genug für das was du machen willst
-
hustbaer schrieb:
Was meinst du bitte mit "User GUID", wenn du nicht die SID meinst?
Ka, GUID ist ja eine global unique ID. Habe mir gedacht, dass Windows womöglich für jeden Account automatisch so eine erstellt.
Unter HKEY_CURRENT_USER/Identities gibt es zwei Schlüsselpaare:
- Default User ID
- Last User IDDas sind beides GUIDs. Und über die Lösung von loks bekomme ich ja auch eine GUID.
hustbaer schrieb:
Ja, die SID ist eindeutig, das ist ja gerade der Sinn der SID.
Ist es das? Keine Ahnung.
Ist die SID nicht eher nur local auf dem Computer eindeutig? Wieso sollte eine SID global eindeutig sein?hustbaer schrieb:
p.S.: die SID wird z.B. in den ACLs (Access Control Lists) verwendet, also überall wo man Berechtigungen für Accounts, Gruppen etc. vergeben kann. Wenn's gut genug dafür ist, ist's vermutlich auch gut genug für das was du machen willst
ACL dreht sich aber eben um den Zugriff. Ich will nur eine eindeutige globale ID haben, genau das was eben eine GUID ist
Tut mir leid, wenn ich das ganz ein wenig anzweifle, aber ich habe keine Ahnung was eine SID ist und was ich bisher darüber gelesen habe, scheint es ein String zu sein, welcher Zugriffsberechtigungen beinhaltet. Es steht nirgends etwas, dass ein SID global eindeutig sein soll.
Grüssli
-
Also das hier:
http://support.microsoft.com/kb/266349
klingt für mich so als ob diese GUIDs unter HKEY_CURRENT_USER/Identities so garnicht an einen Account gebunden wären.MSDN schrieb:
For the WAB API, the important key is HKEY_CURRENT_USERS\Identities\Last User ID. You can set this key with the RegSetValueEx function to influence which identity WAB works with.
Nimm die SID.
Die SID eines Users setzt sich aus der SID des Systems + einem Counter zusammen.
Die SID des Systems wird beim Installieren zufällig generiert, und sollte eindeutig sein.und was ich bisher darüber gelesen habe, scheint es ein String zu sein, welcher Zugriffsberechtigungen beinhaltet.
Nein, eine SID ist bloss eine ID, die beinhaltet garnix.
Zugriffsberechtigungen stehen dann in den ACLs, die im Prinzip Einträge der Form "SID -> Berechtigung" beinhalten (vereinfacht).Es steht nirgends etwas, dass ein SID global eindeutig sein soll.
Ich kann dir nur sagen dass Windows sich an vielen Stellen darauf verlässt, User über die SID eindeutig identifizieren zu können.
Man kann (absichtlich oder unabsichtlich) zwei Computer "erzeugen" deren User die selben SIDs verwenden. Sollte man aber nicht
-
Naja, ich lese mich wohl morgen/heute nochmals genauer in die SID Sache ein, damit ich es ganz sicher weiss
Oder ich erstelle doch noch eine GUID und lege sie in den Anwendungsdaten ab, vielleicht doch das einfachsteGrüssli
-
Ok, ich habe mich jetzt nochmals schlau dazu gemacht. Es scheint, dass der Tipp von hustbear so ziemlich perfekt war. Es ist zwar nicht ganz das, was ich ursprünglich wollte, aber es ist genauso gut.
Daher, vielen Dank für die Hilfe!
Grüssli