cmdline programm aufrufen und daten an dieses senden



  • Hi Forum,

    ich habe folgendes Problem:
    Ich starte das cmd program cacls mit einigen kommandos per system() (gibt es sicher bessere metoden...).
    Dieses Programm fragt mich dann nach "Wollen Sie wirklich ... (J/N)..". Bevor er was tut will er hier ein "J".
    Das programm soll kontinuierlich laufen und es kann nicht immer einer "J" tippen.
    Wie kann ich das realisieren, dass ich cacls..... aufrufe und dem ein "J" sende?

    Als Compiler verwende ich dev-c++

    Oder anders mal gefragt: Kann ich irgendwie direkt per C++ / WinAPI die ACLs bearbeiten?

    Auf jedenfall danke schon im vorraus für Tips / Anregungen



  • Auf Konsolenebene könntest du dein Programm per Pipes mit einem zweiten Programm verkoppeln, das immer nur 'j' ausgibt. Oder du startest das Programm mit man: popen() und schickst ihm dann von deinem Programm aus die richtigen Eingaben.

    (dritte Möglichkeit - schau dir mal die Doku des Programms an - eventuell hat es einen Parameter, der diese Rückfragen abschaltet)



  • Die dritte möglichkeit ist auszuschließen, sonst hätte ich das Problem nicht...
    Ich habe mal etwas mit popen rumprobiert aber bin zu kinem resultat gekommen.

    FILE *pipe;
    pipe=popen("cmd", "w");
    

    öffnet weder die Kommandoshell noch einen Porzess.
    Geht das eventuell nur so bei Unix systemen?



  • Kannst es auch so machen wie hier beschrieben:
    http://support.microsoft.com/kb/135268/en-us

    Oder aber du guckst dir wirklich die ACL Funktionen an. Such in der MSDN nach "Allowing Access Using the Low-Level Functions" und guck dir GetFileSecurity und SetFileSecurity an. Is aber viel mehr Arbeit und die Schiess-Dir-In-Den-Fuss-Gefahr (tm) ist viel grösser.


Anmelden zum Antworten