Reqistry auslesen...
-
das forum hat mir schon in vielen bereichen weitergeholfen, aber immer wenn ich mit registry-api arbeiten muss bekomme ich kopfschmerzen
es soll einfach nur der wert ausgelesen werden...HKEY Rkey; char rrkey[MAX_PATH+1]; // zB: "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run" char rrval[48]; // zB: "Tweak UI" char rbuffer[MAX_PATH+1], daten[MAX_PATH+1]; DWORD type, dw; DWORD size = sizeof(rbuffer); RegCreateKeyEx(HKEY_LOCAL_MACHINE, rrkey, 0, NULL, REG_OPTION_VOLATILE, KEY_ALL_ACCESS, NULL, &Rkey, &dw); // gibt ERROR_SUCCESS zurück if(RegQueryValueEx(Rkey, rrval, NULL, &type, (BYTE *)rbuffer, &size) != ERROR_SUCCESS) // <- gibt nicht ERROR_SUCCESS zurück { // ... } else { sprintf(daten, "%s >> %s", rrval, rbuffer); } RegCloseKey(Rkey);
[ Dieser Beitrag wurde am 17.03.2003 um 16:03 Uhr von diffuser editiert. ]
-
du hast RegQueryValueEx() keinen "type" mitgegeben.
Wenn du einen string auslesen willst musst du vorher
DWORD type = REG_SZ; //siehe MSDN unter RegQueryValueEx
machen.
[edit]
kannst auch statt &type, NULL übergeben, dann ist der typ egal
[/edit]grüsse
[ Dieser Beitrag wurde am 17.03.2003 um 16:16 Uhr von soUrcerer editiert. ]
-
vielen dank für deine antwort. aber RegQueryValueEx gibt immer noch nicht ERROR_SUCCESS zurück
-
das ist eine funktion, aus meiner RegistryManager Klasse ... die funzt ....
vielleicht kannst damit was anfangen.CString CRegMan::GetRegistryValue(HKEY hkRootKey, CString cstrKeyFolder, CString cstrName) { HKEY hkFolder; LONG nResult = RegOpenKeyEx( hkRootKey, cstrKeyFolder, 0,KEY_READ, &hkFolder); if( nResult == ERROR_SUCCESS ){ DWORD dwSize=256, dwType=REG_SZ; unsigned char* pucValue = new unsigned char[256]; nResult = RegQueryValueEx( hkFolder, cstrName, NULL, &dwType , pucValue, &dwSize); CString cstrTemp = ""; if(nResult == ERROR_SUCCESS) cstrTemp = pucValue; delete[] pucValue; RegCloseKey(hkFolder); return cstrTemp; } return ""; }
grüsse
[ Dieser Beitrag wurde am 17.03.2003 um 16:58 Uhr von soUrcerer editiert. ]
-
soUrcerer, vielen vielen dank für deine hilfe.
dadurch, dass ich meinen code schnipsel hier gepostet habe, ist mir aufgefallen, dass der fehler nicht in dem registry call liegen kann
ich hab den fehler gefunden und behoben.
der code aus dem ersten post (und DWORD type = REG_SZ; ) funktioniert jetzt wunderbar.vielen dank nochmal soUrcerer,
tut mir leid wegen der umstände[ Dieser Beitrag wurde am 17.03.2003 um 16:56 Uhr von diffuser editiert. ]