Registry auslesen
-
ich möchte aus der registry auslesen, wo programm XY hininstalliert ist, dies steht in der registry unter: HKEY_LOCAL_MACHINE\SOFTWARE\(Firma)\(Software) im Schlüssel "InstallationDirectory"
folgendes habe ich programmiert, leider funktioniert es nicht so wie es soll. er erkennt zwar die länge des strings, list aber nicht den string selber ein.
HKEY hKey = NULL; char* pBuffer = (char*) malloc(1024); unsigned long nLength = 0; char *temp = (char*) malloc(1024); if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\(Firma)\\(Software)", NULL, KEY_EXECUTE, &hKey) == ERROR_SUCCESS) { DWORD dwError = RegQueryValueEx(hKey, "InstallationDirectory" , NULL, NULL, (PUCHAR)pBuffer, &nLength); if (hKey) RegCloseKey(hKey); } strcpy(temp, (char*)pBuffer); printf(temp);ich habe auch bereits den halben tag das i-net, dieses forum und msdn durchsucht, woran es liegen kann, hab aber nichts gefunden.
ich freue mich auf hilfestellungen jeder art.
LordMogli
-
wenn ich dich richtig verstanden habe dann willst du einen string aus der registry auslesen, den du eingibst. nur es funktioniert nicht bei dir
habe mir mal ne klasse geschrieben, in der ich es so gemacht habe:
#include "registry.h" CRegistry Registry; CString ReadCString(HKEY hHKEY, CString cPath, CString cKey, CString cDeafaltValue) { CString cReturnValue; char cbBuffer_long[355]; if (Registry.Open(hHKEY, cPath)) { Registry.ReadString(cKey, cbBuffer_long, 355); cReturnValue = cbBuffer_long; } if (cReturnValue != "") return(cReturnValue); else return (cDeafaltValue); }guck mal auf gayfiles.de nach CRegistryOperations, da hab ich die ganze klasse und da steht auch die registry.h drin (hoffe habe die aktuelle version hochgeladen ;))
-
-
ja, ne !? ;):D
-
Danke wird mir bestimmt weiterhelfen, werds gleich mal ausprobieren
-
danke an alle die mir geholfen haben, das auslesen funktioniert jetzt, auch wenn ich aus dem quellcode von Red Skall nur "inspirationen" entnommen habe
thx@all
-
damit auch andere die lsg sehen
HKEY hKey = NULL; const size_t nBuffer = 128; char pBuffer[nBuffer]; memset(pBuffer, 0, nBuffer); DWORD nLength = nBuffer; char *temp = (char*) malloc(1024); printf("narf"); if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Firma\\produkt", NULL, KEY_EXECUTE, &hKey) == ERROR_SUCCESS) { DWORD dwError = RegQueryValueEx(hKey, "InstallationDirectory", NULL, NULL, (LPBYTE)pBuffer, &nLength); if (hKey) RegCloseKey(hKey); }
-
Oder schaut doch einfach mal in die FAQ 