in unterschieldliche Bereiche der registry schreiben

gabifi

Mitglied
Die User-Abhängigen Einstellungen meines Programms speichere ich ja unter HKEY_CURRENT_USER\Software\.. aber. Den Ordner unter Software kann ich mit SetRegistryKey("Name") angeben.

Nun möchte ich aber User-unabhängige Daten schreiben, wohl jetzt am besten unter HKEY_LOCAL_MACHINE .

Nur kann mir jemand sagen wie ich in diesen Ordner springe?
Dankeschön
Gabriel
 
Dank dir, werd ich mal gleich ausprobieren. Irgendwie hab ichs in der MSDN net auf diese Seite geschafft, man is ab und zu schon wie vernagelt.
Gabriel
 
Also, das Schreiben klappt wunderbar, nur häng ich grad, wenn ich die Werte wieder auslesen mag.
Hier mal mein Versuch, vieleicht kann mir mal jemand sagen, wieso ich nix in den Bufferpsz reingeschrieben bekomme.Das Handle auf die Registry passt, damit schreibe ich au, aknn als Fehler denk ich auscgelossen werden.
Code:
HKEY hk; 
   wsprintf(szBuf,"SOFTWARE\\%s\\%s\\Admin",FIRMA, PROGRAMMNAME);
   
   CString str;
   LPTSTR psz = str.GetBuffer(MAX_PATH);
   
   RegCreateKey(HKEY_LOCAL_MACHINE, szBuf, &hk);
   
   RegQueryValueEx(hk,
   pszValueName,
   0,
   NULL,
   (LPBYTE) psz,
   (LPDWORD) strlen(psz) );
   
   str.ReleaseBuffer();

Oder ne andere Lösung wär ein Traum.

Schreibe au noch ein Setup-Programm und möchte dort gerne Daten in die registry schreiben, aber abhängig von bestimmten Größen. Es klappt ohne Probleme, was reinzuschreiben, nur kann ich bis jetzt nur nen festen Wert angeben und keine "variablen" Werte reintun. Weiß jemand Rat?
Dankschön

GAbriel
 
So, weil ich selber immer lang such bis ich in Foren dieLösung find, hier mal mein Code wie ichs gelöst hab, vielleicht kanns ja jemand brauchen
Code:
HKEY hk; // Handle zum Eintrag
	TCHAR szBuf[MAX_PATH]; // Pfad zum Eintrag
	wsprintf(szBuf,"SOFTWARE\\%s\\%s\\Admin",FIRMA, PROGRAMMNAME);
	
	if( RegCreateKey(HKEY_LOCAL_MACHINE, szBuf, &hk) == ERROR_SUCCESS )
	{
		int size = 0;
		DWORD type;
		// Größe bestimmen
		RegQueryValueEx(hk, pszValueName, NULL, &type, NULL, (LPDWORD) &size);
		TCHAR* pStr = new TCHAR[size];
		// Wert auslesen
		if (RegQueryValueEx(hk, pszValueName, NULL, &type, (BYTE*) pStr,(LPDWORD) &size)==ERROR_SUCCESS)
		{
			CString str;	
			if (type!=REG_SZ)
				str = strdefault;
			else
				str = CString(pStr);
			delete [] pStr;
			RegCloseKey(hk);
			return str;
		}
		else
		{
			delete [] pStr;
			RegCloseKey(hk);
			return strdefault;
		}
	}
 
Hallo zusammen;)

Also mit dem Lesen bzw. schreiben von Variablen Werten hab ich keine Probleme...
Aber ich muss jetzt alle Subkey unter einem Key auslesen, um alle USB Geräte zu erfassen, die an den Reechner angeschlossen sind/waren.
Um dies zu erreichen, muss ich unter
Code:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\Vid_0403&Pid_6001\XXXX
Alle mit XXXX symbolisierten Unterordner/Subkeys wie man die auch nennen mag, muss ich auslesen, nur wie?
Ich find hier http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/registry_functions.asp nichts was dazu passen würde...
Ich bräuchte sowas wie RegGetAllSubKeys(), oder so^^

Freu mich über jede Hilfe ;)
LG RuFF
 
Zuletzt bearbeitet:
Dank U Well ;)
Werde ich mir mal näher anschaun *g*

Bei Problemen werde ich mich melden^^

Mal wieder ist der MCoder meine Rettung, in dem Dschungel der MFC ;)

Gruss
RuFF
 
Funktioniert wunderbar^^
Bekomme alle Unterschlüssel, sprich Geräte gelistet und kann damit arbeiten ;)

Danke und Gruss
RuFF
 
Zurück