Supportnet / Forum / Anwendungen(Java,C++...)
C - registry DWORD auslesen
Frage
Hi!
Ich möchte mittels eines C/C++ Programms in der REgistry mit der FUnktion RegQueryValueEx ein DWORD auslesen. Hat jemand ne Ahnung, was ich da am besten als Parameter eingeben muss? Habs scho versucht mit:
char str_active[255];
unsigned long lReg=255;
struct HKEY__ *hkey;
long lINback;
lINback = RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\1",0,KEY_READ,&hkey);
if(lINback!=ERROR_SUCCESS) {
cerr << "RegKey nicht gefunden";
exit(2);
}
RegQueryValueEx(hkey, "1200", Null, Null, str_active, &lReg);
char cBuffer[255];
sprinft(cBuffer, %s, str_active);
MessageBox(cBuffer, NULL, MB_OK);
Kann mir jemand bitte helfen? Find einfach nichts im Netz.
VIele Grüße
Katharina
Antwort 1 von hendrikw
Die Zeile:
struct HKEY__ *hkey;
sieht bei mir so aus (MSVC):
HKEY hkey;
Sonst sollte das OK sein.
mfg
Hendrik
struct HKEY__ *hkey;
sieht bei mir so aus (MSVC):
HKEY hkey;
Sonst sollte das OK sein.
mfg
Hendrik
Antwort 2 von Katharina
Nee, bei mir gehts net - zumindest kann ich den Wert nicht ausgeben?
Kann mir jemand sagen, wie man einen "unsigned char *" ausgeben kann? Will testen, ob der richtige WErt zurückkommt.
Danke schonmal.
Viele Grüße
katharina
Kann mir jemand sagen, wie man einen "unsigned char *" ausgeben kann? Will testen, ob der richtige WErt zurückkommt.
Danke schonmal.
Viele Grüße
katharina
Antwort 3 von hendrikw
Du solltest es gleich auf einen long-Wert ziehen:
unsigned long lll;
lReg = 4;
lError = RegQueryValueEx(hKey,"1200",NULL,NULL,(LPBYTE)&lll,&lReg);
Dann brauchst Du Dich nicht um Ausgabeprobleme zu kümmern.
mfg
Hendrik
unsigned long lll;
lReg = 4;
lError = RegQueryValueEx(hKey,"1200",NULL,NULL,(LPBYTE)&lll,&lReg);
Dann brauchst Du Dich nicht um Ausgabeprobleme zu kümmern.
mfg
Hendrik
Antwort 4 von Katharina
Das Problem ist, dass ich das immer in einer MessageBox ausgeben muss, weil bei mir printf und cout nie funktionieren (aus welchem grund auch immer).Und da kann man auch einen long-Wert nicht ausgeben oder seh ich das falsch?
Viele Grüße
katharina
Viele Grüße
katharina
Antwort 5 von hendrikw
Den kannst Du aber mit Standard-Funktionen konvertieren oder gleich mit sprintf in ein char-Array malen.
DWORD ist ein "32 Bit unsigned integer".
Um den richtig auszulesen musst Du schon eine Variable passenden Typs verwenden (DWORD bzw. unsigned long).
mfg
Hendrik
DWORD ist ein "32 Bit unsigned integer".
Um den richtig auszulesen musst Du schon eine Variable passenden Typs verwenden (DWORD bzw. unsigned long).
mfg
Hendrik
Antwort 6 von Katharina
Danke ;-))) Es funktioniert jetz. Habe bei ReqQueryValueEx vergessen dem letzten Parameter eine Größe zuzuweisen und vielen Dank für den Tipp mit dem richtigen Wandeln - hatte nämlich sprintf schon versucht, aber den falsche Umwandlung gewählt.
Vielen Dank
Katharina
Vielen Dank
Katharina

