reg probleme



  • hi
    ich habe in der faq, das über die registry gelesen. Einen schlüssel erstellen kann ich jetzt.
    aber ich kann noch keinen wert erstellen (zB für autostart)

    private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) 
    {
    HKEY hKey;
    BYTE cString[]="C:\Programme\Programm.exe";
    RegSetValueEx(hKey,_T("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run"),0,REG_SZ,cString,strlen(cString)+1);
    }
    

    DIESE FEHLERMELDUNG KOMMT DANN
    1>c:\eigene dateien\visual studio 2005\projects\das_spiel\das_spiel\Form1.h(196) : warning C4129: 'P': Nicht erkannte Folge von Escapesequenz
    1>c:\eigene dateien\visual studio 2005\projects\das_spiel\das_spiel\Form1.h(196) : warning C4129: 'P': Nicht erkannte Folge von Escapesequenz
    1>c:\eigene dateien\visual studio 2005\projects\das_spiel\das_spiel\Form1.h(197) : error C2664: 'strlen': Konvertierung des Parameters 1 von 'BYTE [24]' in 'const char *' nicht möglich

    und es wäre ganz nett wennmir jemand sagen könnte wie ich einen wert ändere
    danke
    zapp91



  • Böse Falle:

    BYTE cString[]="C:\Programme\Programm.exe";
    
    BYTE cString[]="C:\\Programme\\Programm.exe";
    


  • erst mal danke für die schnelle antwort, die warnungen sind weg aber der fehler bleibt bestehen

    c:\eigene dateien\visual studio 2005\projects\das_spiel\das_spiel\Form1.h(200) : error C2664: 'strlen': Konvertierung des Parameters 1 von 'BYTE [26]' in 'const char *' nicht möglich



  • Dazu schau mal in die FAQ: Konvertierung System::String => char* oder wchar_t*



  • ich bab mir das jetzt mal angeschaut, muss aber ganz ehrlich sagen, ich verstehe nur bahnhof 😕 . könntest du mir das vlt ein bisschen erläutern oder mir nen beispielcode schreiben?? bin noch ein neuling
    danke
    zapp91



  • so ich habs jetzt hinbekommen.

    RegSetValueEx(hKey,_T("compgame"),0,REG_SZ,cString,strlen(reinterpret_cast<char*>(cString))+1);
    

    aber ich habe noch eine frage, ich will ja nen autostart in die registry schreiben, aber wenn ich nen wert erstelle, mit dem wert C:\\Programme\\Programm.exe
    dann ist der wert immer 㩃氇桰扡敬摮攮數 sowas und der autostart geht nicht... is ja logisch
    danke
    mfg
    zapp91



  • Was für ein Datentyp ist denn cString ?



  • sry das hab ich ganz vergessen, es ist ein BYTE. hiernochmal der gesamte code

    BYTE cString[]="C:\\Programm\\Programm.exe";
                 RegCreateKeyEx(HKEY_CURRENT_USER,_T("Software\\Microsoft\\Windows\\CurrentVersion\\Run"),0,0,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,0);
    			 RegSetValueEx(hKey,_T("Programm"),0,REG_SZ,cString,strlen(reinterpret_cast<char*>(cString))+1);
    


  • BYTE = typdef unsigned char BYTE



  • hat keiner von euch ne idee ist nämlich wirklich wichtig?? 😞



  • Warum der reinterpretcast ?



  • das ist nur eine Möglichkeit die ich ausprobiert habe. Ich habe es auch schon so probiert

    strlen((char *)cString)+1);
    

    das führt aber zum selben ergebnis. 😞


Anmelden zum Antworten