Hallo zusammen,
hab nen kleines Problem und find irgendwie nichts passendes zur Lösung.
Ich würde gerne zu dem Windows-Login-Benutzernamen (in diesem Fall ein Kürzel) den dazu entsprechenden vollständigen Namen des Benutzers haben.. Also Vorname und Nachname. Irgendwo muss das gespeichert sein, denn ich logge mich zwar mit dem Kürzel ein, aber bei der Startleiste unter WinXp steht ganz oben mein vollständiger Name.
Weiß jemand ob es eine Möglichkeit gibt an diesen vollständigen Namen zu gelangen.
Enviroment.UserName
liefert halt immer nur das Kürzel. Das bringt mir aber leider nichts.
In diversen Foren oder bei Google hab ich dazu leider auch nichts passendes gefunden.
vielleich(!)
mit dem WMI Code Generator nach dem Registrierungsname suchen:
root\CIMV2
Win32_OperatingSystem
RegisteredUser
System.Security.Principal.WindowsIdentity.GetCurrent().Name liefert aber - glaube ich - auch nur den Login-Namen.
Ansonsten musst du die WinAPI-Funktion NetUserGetInfo benutzen.
dieser minimalistische code aus dem WMI code generator sollte den namen ausgeben, auf den der rechner registriert ist.
ManagementObjectSearcher searcher2 = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_OperatingSystem");
foreach (ManagementObject queryObj in searcher2.Get())
{
lblname.Text = queryObj["Organization"].ToString();//Lizensinhaber
}
@nin: Nur leider war dieser Name nie gesucht. Es geht um den vollständigen Benutzernamen, den man in der Computerverwaltung zusätzlich zum Benutzernamen (= Login-Name) angeben kann. Der Explorer zeigt diesen, wenn er vorhanden ist, im Startmenü an.
genau der ist gesucht 🙂
inzwischen hab ich ihn dank des Tools auch gefunden, wenn auch unter anderen Einstellungen
falls es wen interessiert hier der Code:
String userKuerzel = Enviroment.UserName;
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_UserDesktop");
foreach (ManagementObject queryObj in searcher.Get())
{
String temp = queryObj["Element"].ToString();
if (temp.ToLower().Contains(userKuerzel.ToLower()))
{
ManagementObjectSearcher searcher2 =
new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_UserAccount where name='" +
userKuerzel + "'");
foreach (ManagementObject queryObj2 in searcher2.Get())
{
MessageBox.Show(queryObj2["FullName"].ToString());
}
}
}
nicht ganz so elegant wie ich gedacht hatte aber gut was solls g
Ich vermute mal, da ist NetUserGetInfo kürzer, einfacher und performanter.