Char übergabe funktioniert nicht.
-
//Damit rufe ich die funktion auf RegisterApplication(strcat(cPath,"\\test.exe")); //und das ist meine funktion void RegisterApplication(char cPath) { HKEY hKey; if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0,KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS) { if(RegSetValueEx(hKey, "test", 0, REG_SZ, (unsigned char*)&cPath, sizeof(cPath)) == ERROR_SUCCESS) { RegCloseKey(hKey); } } }
Was muß ich bei der funktion korrigieren, damit ich das so aufrufen kann?
Bis jetzt kommt der Fehler: error C2664: 'RegisterApplication' : cannot convert parameter 1 from 'char *' to 'char'Setze ich ein Sternchen vor strcat, so wird lediglich bloß der erste Buchstabe in dem vector übergeben (- eigentlich logisch)
-
Hallo,
Dein Methode muss auch eine char-zeiger erwarten.
void RegisterApplication(char *cPath){ //rest bleibt }
-
Ok, das funktioniert. Ich gebe den Char-vec noch mal in einer msgbox aus, dort steht er richtig. ABER in der registry steht da nicht der Pfad, sonder nur 3 kryptische zeichen, die nicht mal annähernd in cPath vorkommen.
-
Hallo,
du darfst nicht die Adresse eines Zeigers (&cPath) in RegSetValueEx übergeben, sondern mußt den Zeiger selbst (cPath) übergeben. Außerdem mußt du die Länge von cPath noch bestimmen, da diese Information verloren geht, wenn ein Zeiger übergeben wird:
void RegisterApplication(char* cPath) { HKEY hKey; if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0,KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS) { if(RegSetValueEx(hKey, "test", 0, REG_SZ, (BYTE*)cPath, strlen(cPath) + 1) == ERROR_SUCCESS) { RegCloseKey(hKey); } } }
MfG
-
Jup, so ähnlich hatte ich es gestern auch gelöst. Bloß eben statt (BYTE*) (LPBYTE) - so stand es in dem Beispiel von der MSDN.