Registry macht mich verrückt
-
Hi,
Folgende Registry funktionen sollten eigentlich die Autoruneinträge regeln doch sie funktionieren nicht bis auf "BOOL AutoRun_setzen(void)" -> das ist die einzige Funktion die funzt.
#define EXENAMEPFAD TEXT("\\MemGraph.exe") #define REG_AUTORUN_NAME TEXT("MemGraph") //..... BOOL AutoRun_setzen(void) { HKEY hKey; char cString[MAX_PATH]; GetCurrentDirectory(MAX_PATH,cString); lstrcat(cString,EXENAMEPFAD); RegCreateKeyEx(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",0,0,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,0); //Öffnet den RegKey -> Hier Autorun! RegSetValueEx(hKey,REG_AUTORUN_NAME,0,REG_SZ,(BYTE *)cString,lstrlen(cString)); // Pfad in Reg eintragen !!!! //Schreiben des RegKey RegCloseKey(hKey); //Schliessen des RegKey return TRUE; }// Funktion Autorun BOOL AutoRun_schon_gesetzt(void) { return RegKeyExists(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Run\\MemGraph"); }// Funktion Autorun BOOL AutoRun_loeschen(void) { RegDeleteKey(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Run\\MemGraph"); // Lösche erstellten Probe schlüssel ! return FALSE; }// Funktion Autorun BOOL RegKeyExists(HKEY hKey, LPCTSTR lpSubKey) // Funktion ist die von -King- { LONG lResult; HKEY hSubKey; BOOL bRet; if(ERROR_SUCCESS != (lResult = RegOpenKeyEx(hKey, lpSubKey, 0, 0, &hSubKey))) { if(lResult == ERROR_FILE_NOT_FOUND) bRet = FALSE; else bRet = TRUE; } else { RegCloseKey(hSubKey); bRet = TRUE; } return (bRet); }
Sieht jemand den Fehler ??? Sowohl das löschen als auch das überprüfen auf vorhanden sein der Registry geht nicht
.
MfG Unwissender
P.s: Ich habe WinXP
-
Hi.
Du verwechselst Key mit Value! Alles auf der linken Seite in regedit.exe sind Keys (Schlüssel), alles rechts sind Values (Werte). In Deinem Fall ist HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run der Key und MemGraph der Value.
Die folgende Funktion löscht den Wert nicht den Schlüssel:BOOL AutoRun_loeschen(void) { HKEY hKey = NULL; if (ERROR_SUCCESS == (RegOpenKeyEx(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_ALL_ACCESS, &hKey))) RegDeleteValue(hKey,"MemGraph"); // Lösche erstellten Probe schlüssel ! else Info("Fehler", "Kann RegKey nicht öffnen!"); RegCloseKey(hKey); return FALSE; }
Das gleiche gilt für RegKeyExists()
....
John
-
@John
Vielen vielen Dank - Ich hab das tatsächlich flasch verstanden - nochmal vielen vieln DankMfG Unwissender