GetModuleFileName zusammen mit Registry-Pfusch



  • Hallo,

    ich bin grad bei mit eine Funktion zu schreiben, die per GetModuleFileName den Namen meiner Datei ermitteln und den dann in die Registry packen soll, zwecks Autostart zusammen mit Windows.

    Wenn ich diese Passage:

    LPTSTR lpFilename;
        DWORD nSize = 300;
        GetModuleFileName ( NULL, lpFilename, nSize );
    

    alleine verwende, dann klappt das ermitteln des Dateinamen super.
    Wenn ich das mit dem anderen Kram für den RegEntry zusammen habe, kriege ich immer ne EAccessViolation mit der Meldung "Zugriffsverletzung in meinem Module bei Adresse blub blub ..." beim Schritt, wo GetModuleFileName aufgerufen wird.

    Hier mal die gesamte Funktion:

    LPCTSTR lpSubKey = "\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
        HKEY hKey;
        LONG lRet;
    
        LPTSTR lpFilename;
        DWORD nSize = 300;
        GetModuleFileName ( NULL, lpFilename, nSize );
    
        if ( flag == true )
        {
            lRet = RegOpenKeyEx ( HKEY_LOCAL_MACHINE, lpSubKey, 0, KEY_SET_VALUE, &hKey );
            if( lRet != ERROR_SUCCESS )
                return false;
            lRet = RegSetValueEx ( hKey, "PartMet BAcKup", 0, REG_SZ, lpFilename, strlen(lpFilename)+1 );
    
            RegCloseKey ( hKey );
        }
    
        return true;
    

    Wäre super, wenn mir einer sagen könnte, wo der Fehler liegt.
    Ich schätze es ist weil ich einmal ein LPTSTR habe und den als LPCTSTR einsetze, aber sicher bin ich da nicht und ich weiß nicht wirklich, wo ich was anders machen kann.

    Danke im Voraus!!!



  • bitte gib lpFilename ein wenig SPEICHER



  • Original erstellt von <ram-disk>:
    bitte gib lpFilename ein wenig SPEICHER

    Hab ich das denn nicht damit getan?

    DWORD nSize = 300;
    

    Falls nicht sorry, aber wo soll ich das dann noch machen?



  • TCHAR lpFilename[MAX_PATH];



  • Original erstellt von <ram-disk>:
    TCHAR lpFilename[MAX_PATH];

    Oh Man(n)!!!!
    Das nSize ist ja da um zu sagen, wo abgeschnitten wird ... 😮

    Ich danke Dir vielmals für's Augen öffnen!!!!

    MfGr,
    mid



  • nSize = MAX_PATH


Anmelden zum Antworten