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 Dank 🙂

    MfG Unwissender 🙂


Anmelden zum Antworten