Hallo Kay, hallo SuRun-Nutzer,

zunaechst ein Lob fuer SuRun.

Nachdem ich SuRun nun schon einige Jahre benutze habe ich nun die Anforderung (im konkreten Fall ein CMD-Skript), eine Konsolenanwendung durch SuRun ausfuehren zu lassen. Dabei ist es notwendig, das der Aufrufer blockiert wird, bis die Anwendung beendet ist.

Da Konsolenanwendungen bisher nicht in dieser Art von SuRun unterstuetzt werden, hab ich einen Wrapper entworfen und moechte den an dieser Stelle vorstellen.

https://github.com/redneck-f25/csurun

- Dem Programm csurun.exe wird eine Kommandozeile uebergeben, die mit administrativen rechten ausgefuehrt werden soll.
- Csurun.exe stellt dieser das Hilfprogramm csurunh.bin voran und uebergibt als Kommandozeileoption die eigene Prozess-ID.
- Der gesamte Aufruf wird an surun.exe uebergeben.
- Nach Bestaetigung durch den Nutzer haengt sich csurunh.bin an die Konsole von csurun.exe und leited stdin, stdout und stderr durch Named Pipes.
- Nach Beendigung der Zeilanwendung wird dessen Exitcode abgefragt und an csurun.exe zurueckgegeben, woraufhin sich dieses beendet und den erhaltenen Wert zurueck gibt.

Ein Paket mit Quellen (Visual Studio 2015), kompilierten Binaerdateien und Installationsskript kann bei Github heruntergaladen werden. https://github.com/redneck-f25/csurun/releases

Frage an die Nutzer: Braucht ihr sowas?

Frage an Kay: Koennte man das in dein Installationspaket integrieren und wenn ja, was muesste noch getan werden?
6 Tage später
Hallo redneck,

Danke für Dein Interesse daran, SuRun weiter zu entwickeln und sorry für die späte Reaktion.

Ich hatte mich mit dem Thema Konsole schon viel beschäftigt.
Eine kleine Zusammenfassung ist z.B. hier http://forum.kay-bruns.de/post/1682

Pipes zu benutzen, um StdIn/~Out/~Err umzuleiten hatte damals nicht gut funktioniert.
cmd schreibt und liest die Pipes asynchron und die Ausgabe in der originalen Konsole wird deshalb ziemlich durcheinander dargestellt.
Vielleicht hast Du eine Idee, das zu syncen...

Eigentlich müsste man die komplette Funktionalität der Konsole nachbilden, um das sauber zu lösen.

Ich bin damals dabei hängen geblieben, ein eigenes Programm "SuRunC" zu schreiben.
Der Plan:
- SuRunC ruft SuRun mit "/ConsPID <ProcessID> <Command line>" auf
- Wenn der Benutzer zustimmt, setzt SuRun den ProzessToken des SuRunC Prozesses auf gehobene Rechte
- SuRunC startet <Command line> als Admin und beendet sich.

Alles ist rudimentär in SuRun eingebaut, aber auskommentiert.
Ich weiss aber nicht mehr, warum. :huh:
Eine Antwort schreiben…
Impressum, Datenschutz