Username Windows auslesen
-
Hallo,
ich könnte mal eure Hilfe beim Username auslesen von Windows gebrauchen.
Ich hatte immer diesen Code verwendet, der mit der alten Builderversion ging.
Jetzt mit dem Builer 10.2 geht es leider nicht mehr.// Username
DWORD dwSize = 0;// Determine how many chars we need to store user name
GetUserName(NULL, &dwSize);// create a buffer that is big enough
char *szBuf = new char[dwSize];
szBuf[0] = '\0';
GetUserName(szBuf, &dwSize);Edit1->Text = szBuf;
Fehlermeldung:
[bcc32 Fehler] Unit1.cpp(30): E2034 Konvertierung von 'char *' nach 'wchar_t *' nicht möglich
[bcc32 Fehler] Unit1.cpp(30): E2342 Keine Übereinstimmung des Parametertyps 'lpBuffer' ('wchar_t *' erwartet, 'char *' erhalten)
-
Stichwort: Unicode
Wenn du weiterhin mit ANSI arbeiten willst, dann verwende explizit
GetUserNameA(szBuf, &dwSize); // beachte das A
Alternativ verwende TCHAR, s.a. Windows Data Types for Strings.
Es kommt natürlich auch drauf an, ob die VCL-Komponenten mit Unicode umgehen können, d.h. welche RAD Studio-Version du verwendest? (s. Rad Studio Berlin (10.1): Anwendungen für Unicode anpassen)
Für Delphi s.a. Delphi and Unicode.
-
Ich habe es jetzt so gemacht, das lag an den "char", jetzt groß geschrieben "Char",.....und es geht.
//Computernamen anzeigen
Char buf[300];
DWORD bufSize = sizeof(buf);
bufSize = sizeof(buf);
GetComputerName(buf, &bufSize);
StatusBar1->Panels->Items[0]->Text= ("Computer: " + String(buf));//Usernamen anzeigen
Char buf1[300];
DWORD bufSize1 = sizeof(buf1);
GetUserName(buf1, &bufSize1);
StatusBar1->Panels->Items[1]->Text= ("User: " + String(buf1));
-
Dann dürfte Char wohl als TCHAR definiert sein.