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 ;))



  • Red Skall schrieb:

    guck mal auf gayfiles.de

    huh?
    die seite hat aber nicht viel mit "gay" zu tun 😉



  • 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 😉


Anmelden zum Antworten