Problem mit Dos-Befehl



  • Hi

    Ich würde gerne folgenden Befehl ausführen:

    system(
     "\"" + ExtractFilePath(Application->ExeName) +
     "instsrv.exe\" MyService \""                 +
     ExtractFilePath(Application->ExeName)        +
     "srvany.exe\""
     ).c_str());
    

    Im Endeffekt sieht das ganze so aus:

    "C:\Dokumente und Einstellungen\Besitzer\Desktop\blub\autostart\instsrv.exe" MyService "C:\Dokumente und Einstellungen\Besitzer\Desktop\blub\autostart\srvany.exe"

    Wenn ich jetzt den obigen Quelltext ausführe blitzt das Dos-Fenster kurz auf aber in der Registry wird kein neuer Ordner erstellt wie es ja eigentlich passieren sollte.
    Wenn ich aber den Befehl so wie er am Ende aussieht in die Dos-Eingabe einfüge und ausführe funzt das wunderbar.

    Ich glaube die Lösung liegt wie so oft zum Greifen nahe aber ich komme einfach nicht drauf. 🙄
    Könnte mir bitte jemand helfen?

    Gruß
    wasserkocher



  • Ehm die Pfadangaben in Strings müssen mit "\" geschrieben werden, so kann das nicht funktionieren!



  • Ich hab doch garkeine manuellen Pfadangaben 🙄
    Wenn ich mir das Ergebnis auf ein TEdit ausgeben lasse kriege ich folgendes:

    "C:\Dokumente und Einstellungen\Besitzer\Desktop\blub\autostart\instsrv.exe" MyService "C:\Dokumente und Einstellungen\Besitzer\Desktop\blub\autostart\srvany.exe"

    Wenn ich das in ein Dos-Fenster einfüge und auf Enter drücke funzt das wunderbar.
    Wenn ich das selbe, dass intern so aussieht:
    { "\"C:\\Dokumente und Einstellungen\\Besitzer\\Desktop\\blub\\autostart\\instsrv.exe\" blub \"C:\\Dokumente und Einstellungen\\Besitzer\\Desktop\\blub\\autostart\\srvany.exe\"" }
    über system() ausführe klappt das nicht.



  • Also erstens fehlen meines Erachtens Klammern in Deinem Code.
    Zweitens Escape-Sequenzen(siehe Kevinus)
    Was soll drittens das erste "\" vor dem Laufwerk?
    Und viertens ist system veraltet. Nimm lieber ShellExecute.

    Gruss


Anmelden zum Antworten