Lige umiddelbart, så vil jeg mene, at du skal angive '\\' i din streng. Registry->OpenKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\yourapp.Exe", false);
Jeg forstår ikke hvordan du kan have både en variabel der hedder system og dernæst kalde en funktion der også hedder system() - det tillader min compiler ikke.
system() er et kald til 'command.com', så den "kommando" du giver system, skal være en man kan skrive fra et DOS-prompt. Jeg har selv oplevet "uforklarlige" problemer med at få system() til at fungere, og bruger derfor altid spawnl() i stedet:
spawnl(P_WAIT, system.c_str(), system.c_str(), /* hvis ingen parametre*/ NULL);
Jeg ville også debugge mit program lige inden kaldet, for at checke hvad der rent faktisk står i system. (Eller lave en printf("Kalder: \'%s\'\n", system.c_str()); lige inden spawnl kaldet.)
Hvis det er programmet egen path du mangler, kan du læse den i programmets 1. parameter og vha. fnsplit() trække path ud:
int main(int argc, char* argv[]) { char myPath[MAXPATH]; char cmd[MAXPATH]; fnsplit(argv[0], /* Drive not needed */ NULL, myPath, /* File not needed */ NULL, /* Extention not needed. */ NULL); sprintf("%s%s", myPath, argv[1] /* Navn på faktisk program der skal kaldes. */);
Hvis man nu skifter navn på variabel til f.eks. mysqlrun så virker det, Så du havde rigtigt i det med variabel...
Mange tak for hjælpen.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.