Supportnet Computer
Planet of Tech

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


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

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

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

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

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

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: