Hallo,
ich würde gerne Daten in einem Projekt wahlweise allen am Computer oder nur dem angemeldeten User zugänglich machen.
Dazu habe ich mir einfach gedacht, dass ich eine Datenbank (ich arbeite mit SQLite) für alle User mache und für jeden anderen User, der Daten für sich behalten will eine extra Datenbank mit seinem Namen erstellen. Das Problem ist das Herrausfinden des Namens.
Ich bin an diesem PC mit dem Namen "Malte" (ist ein Familien-PC und das ist mein Vorname).
System.Security.Principal.WindowsIdentity.GetCurrent().Name = "(Computername)\User"
System.Environment.UserName = "User"
Wenn ich es unter einem anderen Name ausführen lasse (Ausführen als...) kommt der richtige Name.
Im Taskmanager steht übrigends auch überall "User".
In meinem Projekt würde das aber heißen, dass alle ihre Daten in der selben Datenbank speichern, die sie eigentlich für sich behalten wollen.
Wie kann ich jetzt den Benutzernamen rausfinden?
Hallo LaberLu,
also ich bekomme hier auf meinem Rechner (.NET 2.0/Win2k) mit beidem von dir geposteten Wegen die richtigen Angaben.
herbivore
Das heißt, es würde wahrscheinlich bei den meisten Usern gehen, aber es gibt auch welche, wo diese Funktion nicht funktioniert.
Gibt es eine Möglichkeit dies woanders rauszufinden? Über die Registry oder so?
Ich habe mal kurz geguckt, aber nichts gefunden.
Und brauche ich dann auch Admin Rechte? (Nur auslesen, nix reinschreiben)
Hrm, normal sollte das alles ohne Probleme gehen. Ansonsten über Win API Advapi32 GetUserName, siehe hierzu www.pinvoke.net. Wenn dann das selbe Problem auftritt versuchs mal über WMI kannst dir dafür mal das in Codeprojekt ansehen.
Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(
Ich glaube wir haben bald alle Möglichkeiten durch 😉
Advapi32 geht auch nicht, im WMI hab ich nichts gefunden und bei codeproject sind die Downloadlinks down.
Prüf mal lieber wo du deinen Namen da eingegeben hast. Bisher hab ich noch nie erlebt dass da nichts drinsteht bzw was falsches.
Wenn Du die WMI-Klassen suchst, die verwendet werden um was mit dem Benutzer im generellen anzustellen das wären die auf Windows XP SP2
cimv2:CIM_UserDevice
cimv2:Win32_UserAccount
cimv2:Win32_PerfRawData_MSSQLSQLEXPRESS_MSSQLSQLEXPRESSUserSettable
cimv2:__NTLMUser9X
cimv2:MSFT_WmiCoreUser
cimv2:Win32_SystemUsers
cimv2:Win32_UserInDomain
cimv2:Win32_GroupUser
cimv2:Win32_UserDesktop
cimv2:Win32_LoggedOnUser
cimv2:Win32_NTLogEventUser
Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt
Hrm, was für ein Betriebssystem benutzt du den? Muss zugeben habe das bisher nur auf Vista und Xp mal benutzt und von herbivore weis man nun, das es auch unter Windows 2000 geht.
Vielleicht hast ja Vista oder Xp Home und es könnte damit im Zusammenhang zu Problemen kommen?
Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(
Ich habe Xp Pro
Aber ich habe mit WMI etwas interessantes herrausgefunden:
unter
root\CIMV2
Win32_UserAccount
Name
findet er auch nur "User"
Unter
root\CIMV2
Win32_UserAccount
FullName Findet er dagegen Malte.
Wieso erkennt er meinen Namen als Malte, meldet mich als Malte an, aber im System heiße ich User?
Ich habe noch eine Reihe andere durchprobiert und überall kam sonst User raus.
Wo kann ich das ändern?
Kann es sein, dass du als Benutzername "User" angegeben hast und als Vollständigen Namen "Malte".
So oder so prüf mal dein Benutzerkonto.
Fakt ist, dass es hier bei allen klappt und auch aus meinen Erfahrungen hat es bisher immer funktioniert. Also grenz ich dein Fehler mal auf Einstellungen bei dir ein. Grad Win XP (Pro oder nich) sollte dem nicht im Wege stehen.
Also über Systemsteuerung finde ich nur den Namen und der ist Malte.
Wo kann ich den Usernamen überprüfen?
Hallo LaberLu,
also nach meinem Verständnis ist "User" die eigentliche Userid und "Malte" der freiwählbare, beschreibende Name des Benutzerkontos. Also im Sinne von "pmaier" als Userid und "Peter Maier" als beschreibenden Namen. Mag sein, dass man sich mit dem beschreibenden Namen anmelden kann, solange der eindeutig ist und dass der beschreibenden Name an verschiedenen Stellen statt der Userid angezeigt wird, aber die Userid ist eben trotzdem "User". Insofern liefern die Methoden und Funktionen schon das richtige Ergebnis.
Unter Win2k erreicht man die Benutzerverwaltung über Systemsteuerung/"Benutzer und Kennwörter" oder über Systemsteuerung/Verwaltung/Computerverwaltung/"Lokale Benutzer und Gruppen"/Benutzer. Bei ersterem heißt die Bezeichnung für die Userid "Benutzername" und die Bezeichnung für den beschreibenden Namen "Vollständiger Name", bei letzterem "Name" und "Vollständiger Name".
Intern gespeichert ist aber ohnehin weder das eine oder andere, sondern immer nur die SID, die auch dann gleich bleibt, wenn man den Account umbenennt und auch dann ungleich ist, selbst wenn man später oder auf einem anderen Computer einen Account gleichen Namens anlegt.
Siehe auch Win32_UserAccount Class
herbivore
👍
Danke, über Verwaltung habe ich ich es gefunden. Du hattest Recht, der Name war User.
Ich hab ihn in Malte umbenannt, neu gestartet und bis auf mein Symbol ist alles gleich geblieben. Aus irgend einem Grund ist aus der Ente ein Schmetterling geworden, aber meine Eigenen Dateien etc. blieben gleich.
Vielen Dank.