Ein bisschen mit Shell rumspielen?



  • Hi 😮

    alles was ich im Netz zu diesem Thema gefunden hab ist ShellExecute, aber das scheint nur für Dateien zu gehen, ich möchte im Shell
    sachen ausführen wie:

    Ping google.de
    V:
    mkdir Hallo
    exit
    

    Ich suche keine möglichkeit diese Probleme in C++ zu umschreiben sondern nur einen Weg sie direkt im shell auszuführen.

    Außerdem noch eine Zweite Frage anbei:
    Wenn ich WindowsShutdownEx ausführe zeigt mein Debugger immer an
    "PRIVILEGE_NOT_HELD"
    und nix geschieht 😉

    Mit freundlichen Grüßen 👍



  • winapi?
    oder

    shell(ping www.google.de);
    


  • äh so

    shell("ping www.google.de");
    


  • was bist du schrieb:

    äh so

    shell("ping www.google.de");
    

    In welchem Header oder welcher API ist das denn überhaupt?



  • Du könntest auch system verwenden aus der Header cstdlib:

    #include <cstdlib>
    
    int main() {
      system("ping www.google.de");
    }
    

    Greetz



  • Vellas schrieb:

    Du könntest auch system verwenden aus der Header cstdlib:

    #include <cstdlib>
    
    int main() {
      system("ping www.google.de");
    }
    

    Greetz

    Vielen Dank das klappt,
    für alle anderen, ihr bekommt dann das in euer Programm:

    004113B0   .  68 3C564100   PUSH Shell-Ex.0041563C                   ; /command = "ping www.google.de"
    004113B5   .  FF15 B8824100 CALL DWORD PTR DS:[<&MSVCR80D.system>]   ; \system
    

    🙂
    Hat mir echt weitergeholfen!



  • Hallo,
    es hat sich leider nochmal eine Frage in diesem Thema aufgetan, weil ich gerne zusammenhängende Befehle an die Konsole senden will:

    system("CD c:\myapplication");
    system("MKDIR test");
    

    Ich weiß, dass man das in diesem Fall mit

    system("c:\myapplication\MKDIR test");
    

    "umgehen könnte" aber ich möchte es auch wegen anderen Problemen in eine zusammenhängende Shell-Konsole einfügen...

    Weil bis jetzt würde er erstmal einen Shell öffnen und dann "CD c:\myapplication"
    ausführen, den Shell schließen und dann in dem aktuellen ordner den ordner test erstellen. Statt im Ordner C:\myapplication!

    Ich hoffe ihr konntet mir soweit folgen 😃

    Danke schonmal,
    greetings



  • Hallo,
    zumindest unter XP kannst du Befehle schlicht mit && verketten. Sprich:
    system("CD c:\\myapplication && MKDIR test");

    Beachte, dass du Backslashs escapen musst.



  • Hallo,

    auch unter Linux kannst du es so machen, wie Hume es gezeigt hat. Pass
    aber immer gut auf, denn jemand koennte das nutzen, um Zugang zu deinem
    Rechner zu bekommen, denn jemand koennte den Parameter an system
    manipulieren. Wenn dann dort sowas rauskommt wie:

    "<irgendwelche befehle>; <schaedliche befehle>"
    

    ist das Ganze natuerlich nicht mehr so gut ;). Hinter dem ; koennen natuerlich
    irgendwelche Befehle kommen (root passwort neu setzen oder sowas), was
    dann natuerlich beliebig schlecht waere.

    gruss
    v R


Anmelden zum Antworten