C-Sharp Abfrage eines Parameters einer exe
Schönen guten Tag, und danke schon vorweg für die Antworten
Also ich habe eine Exe die mir den Status eines Programmes abruft. Ich kann also in der CMD eingeben:
\\Server\Order\Programm.exe get /status
In der CMD erscheint dann am Ende "AN" oder "AUS".
Ich möchte diesen Status abrufen, und ihn danach in der registry speichern, in "HKLM\SOFTWARE\Statusprogramm\Status"
Ist es in C# möglich, solche Parameter abzurufen?
Also ich habe eine Exe die mir den Status eines Programmes abruft. Ich kann also in der CMD eingeben:
\\Server\Order\Programm.exe get /status
In der CMD erscheint dann am Ende "AN" oder "AUS".
Ich möchte diesen Status abrufen, und ihn danach in der registry speichern, in "HKLM\SOFTWARE\Statusprogramm\Status"
Ist es in C# möglich, solche Parameter abzurufen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 146625
Url: https://administrator.de/forum/c-sharp-abfrage-eines-parameters-einer-exe-146625.html
Ausgedruckt am: 26.12.2024 um 14:12 Uhr
10 Kommentare
Neuester Kommentar
Hallo Manny,
klar geht das, ich hoffe du kannst Englisch
ProcessStartInfo.RedirectStandardOutput Property
Gruß
LotPings
klar geht das, ich hoffe du kannst Englisch
ProcessStartInfo.RedirectStandardOutput Property
Gruß
LotPings
Hallo,
dann vielleicht mit Beispiel aus einem anderen Forum von einem mit gleichem Problem:
www.softgames.de/forum/frage121055.html.
Grüße perseues
dann vielleicht mit Beispiel aus einem anderen Forum von einem mit gleichem Problem:
www.softgames.de/forum/frage121055.html.
Grüße perseues
Hallo Manny,
wenn du Code postest fasse ihn bitte in Code-Tags ein, siehe Formatierungshilfe
Deinen Wissensstand in bezug auf C# konnte man deinem ersten Posting nicht entnehmen.
Der Backslash ist ein Escapezeichen, du musst daher alle Backslash verdoppeln, damit sie ein Literales Backslash ergeben.
Gruß
LotPings
wenn du Code postest fasse ihn bitte in Code-Tags ein, siehe Formatierungshilfe
Deinen Wissensstand in bezug auf C# konnte man deinem ersten Posting nicht entnehmen.
Der Backslash ist ein Escapezeichen, du musst daher alle Backslash verdoppeln, damit sie ein Literales Backslash ergeben.
DeepFreeze.StartInfo.FileName = "\\\\server\\Programme\\DFC.exe";
Gruß
LotPings
Zitat von @Manny1988:
Unten ist jetzt mal der Code wie ich ihn jetzt zusammengebastelt hab aus euren Links. Mitlerweile startet das ganze Fehlerfrei,
jedoch schließt es sich auch sofort.
Ich sehe nichtmal ob er wenigstens die Information ausgibt die er in der cmd normalerweise ausgeben würde.
Dann starte die Exe doch in einem CMD Fenster,Unten ist jetzt mal der Code wie ich ihn jetzt zusammengebastelt hab aus euren Links. Mitlerweile startet das ganze Fehlerfrei,
jedoch schließt es sich auch sofort.
Ich sehe nichtmal ob er wenigstens die Information ausgibt die er in der cmd normalerweise ausgeben würde.
oder stelle deine IDE so ein, das das Fenster offenbleibt.
Wenn dich C# vor Probleme stellt, warum nimmst du nicht einfach eine Batch für die an sich triviale Aufgabe?
Gruß
LotPings
Hallo Manny1988!
müsste das nicht eher etwas in dieser Art sein?:
Wobei die Codezeile 11 den anderen Prozess startet, auf dessen Beendigung wartet und im Anschluß der Std-Out gelesen wird?
Gruß Diete
müsste das nicht eher etwas in dieser Art sein?:
class Program
{
static void Main(string args)
{
Process p = new Process();
p.StartInfo.FileName = "\\\\b7serve\\Programme\\DFC.exe";
p.StartInfo.Arguments = "get /isfrozen";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.WaitForExit();
Console.WriteLine(p.StandardOutput.ReadToEnd());
}
}
Gruß Diete
Zitat von @76109:
müsste das nicht eher etwas in dieser Art sein?:
snipmüsste das nicht eher etwas in dieser Art sein?:
Wobei die Codezeile 11 den anderen Prozess startet, auf dessen Beendigung wartet und im Anschluß der Std-Out gelesen wird?
Hallo Dieter,laut der Info in meinem obigen Link soll diese Reihenfolge mögliche Deadlocks verhindern. (Auch wenn das bei der hier minimalen Ausgabe eher unwahrscheinlich ist.)
The code example avoids a deadlock condition by calling p.StandardOutput.ReadToEnd before p.WaitForExit. A deadlock condition can result if the parent process calls p.WaitForExit before p.StandardOutput.ReadToEnd and the child process writes enough text to fill the redirected stream. The parent process would wait indefinitely for the child process to exit. The child process would wait indefinitely for the parent to read from the full StandardOutput stream.
Gruß
LotPings
Hallo LotPings!
Mhm, dann hätte ich Deinen Info-Link wohl besser vorher lesen sollen
Gruß Dieter
Mhm, dann hätte ich Deinen Info-Link wohl besser vorher lesen sollen
Gruß Dieter