858 Aufrufe
Gefragt in Anwendungen(Java,C++...) von
Hallo,

Ich will ein paar basis daten über das BS auslesen:

unsigned char szDataBuf[128];
HKEY hkey;
DWORD dwSize = 128;

RegOpenKeyExA(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows NT\\CurrentVersion", 0, KEY_READ, &hkey);
RegQueryValueExA(hkey, "ProductName", NULL, NULL, szDataBuf, &dwSize);
cout << szDataBuf << "\n";
RegQueryValueExA(hkey, "CSDVersion", NULL, NULL, szDataBuf, &dwSize);
cout << szDataBuf << "\n";
RegQueryValueExA(hkey, "CurrentVersion", NULL, NULL, szDataBuf, &dwSize);
cout << szDataBuf << "\n";
RegQueryValueExA(hkey, "CurrentBuildNumber", NULL, NULL, szDataBuf, &dwSize);
cout << szDataBuf << "\n";
RegQueryValueExA(hkey, "RegisteredOrganization", NULL, NULL, szDataBuf, &dwSize);
cout << szDataBuf << "\n";
RegQueryValueExA(hkey, "RegisteredOwner", NULL, NULL, szDataBuf, &dwSize);
cout << szDataBuf << "\n";
RegQueryValueExA(hkey, "SystemRoot", NULL, NULL, szDataBuf, &dwSize);
cout << szDataBuf << "\n";



als ausgabe bekomme ich aber:

Microsoft Windows XP //correct
Service Pack 3 //correct
5.1 //correct
5.1 //nope
5.1 //nope
%username% //nope
%username% //correct
//systemroot fehlt ganz


Manchmal funktionirt es, manchmal nicht.
Ich werde noch ganz schnippelig hier... :S

1 Antwort

0 Punkte
Beantwortet von son_quatsch Experte (5.3k Punkte)
Du musst auch prüfen, ob der Funktionsaufruf selbst erfolgreich ist. Wenn nicht, wird szDataBuf nicht verändert und behält logischerweise auch seinen vorherigen Wert. Warum versuchst du es nicht mit einem etwas ausführlicherem Beispiel, wie unter msdn.microsoft.com/en-us/library/ms724911(VS.85).aspx?
...