Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

C-Sharp Abfrage eines Parameters einer exe

Frage Entwicklung

Mitglied: Manny1988

Manny1988 (Level 1) - Jetzt verbinden

10.07.2010 um 10:10 Uhr, 3903 Aufrufe, 10 Kommentare

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?
Mitglied: LotPings
10.07.2010 um 11:11 Uhr
Hallo Manny,

klar geht das, ich hoffe du kannst Englisch
ProcessStartInfo.RedirectStandardOutput Property

Gruß
LotPings
Bitte warten ..
Mitglied: Manny1988
10.07.2010 um 11:38 Uhr
Ich muss gestehen, ich kann nicht viel damit anfangen. Es soll auf jedenfall eine Consolen Anwendung sein, die einfach nur die Exe ließt, und dann am Ende den Wert in den Regedit einträgt. Tut mir wirklich Leid, ich bin mit meinen Programmierkenntnissen noch nicht so weit, if & else, bischen was mit Schleifen und so Kleinzeug ist einfach, aber bei sowas wird mein Verständnis leider überschritten.

edit:

Also ich habs jetz mal so versucht, wahrscheinlich versteh ich einfach das Prinzip gar nicht und es is deswegen falsch

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;

namespace Zustand_prüfen
{
class Program
{
static void Main(string[] args)
{
Process DeepFreeze = new Process();
DeepFreeze.StartInfo.FileName = "\\server\Programme\DFC.exe";
DeepFreeze.StartInfo.Arguments = "get /isfrozen";
DeepFreeze.StartInfo.UseShellExecute = false;
DeepFreeze.StartInfo.RedirectStandardOutput = true;
DeepFreeze.Start();

Console.WriteLine(DeepFreeze.StandardOutput.ReadToEnd());

DeepFreeze.WaitForExit();


}
}
}

Bei dem "\\server\Programme wirft der mir einen Fehler aus, wahrscheinlich weil er nicht damit klar kommt das ich einen Pfad angebe?
Bitte warten ..
Mitglied: perseues
10.07.2010 um 12:01 Uhr
Hallo,

dann vielleicht mit Beispiel aus einem anderen Forum von einem mit gleichem Problem:
www.softgames.de/forum/frage121055.html.

Grüße perseues
Bitte warten ..
Mitglied: Manny1988
10.07.2010 um 14:18 Uhr
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.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;

namespace Zustand_prüfen
{
class Program
{
static void Main(string[] args)
{
Process p = new Process();

p.StartInfo.FileName = "C:\\DFC.exe";
p.StartInfo.Arguments = "get /isfrozen";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.Start();

Console.WriteLine(p.StandardOutput.ReadToEnd());

p.WaitForExit();


}
}
}
Bitte warten ..
Mitglied: LotPings
10.07.2010 um 14:23 Uhr
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.
DeepFreeze.StartInfo.FileName = "\\\\server\\Programme\\DFC.exe";
Gruß
LotPings
Bitte warten ..
Mitglied: LotPings
10.07.2010 um 14:35 Uhr
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,
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
Bitte warten ..
Mitglied: Manny1988
10.07.2010 um 14:46 Uhr
01.
 class Program 
02.
    {        
03.
        static void Main(string[] args) 
04.
05.
            Process p = new Process(); 
06.
 
07.
            p.StartInfo.FileName = "\\\\b7serve\\Programme\\DFC.exe"; 
08.
            p.StartInfo.Arguments = "get /isfrozen"; 
09.
            p.StartInfo.UseShellExecute = false; 
10.
            p.StartInfo.RedirectStandardOutput = true; 
11.
            p.Start(); 
12.
 
13.
            Console.WriteLine(p.StandardOutput.ReadToEnd()); 
14.
 
15.
            p.WaitForExit(); 
16.
 
17.
 
18.
19.
    }
Entschuldigung, habe ich wahrlich nicht erwähnt. Also ich bin in Sachen Programmierung kein erfahrener Mensch. Bissel was in Batch, aber das wars auch.

Okay, mit dem Doppel-Backslash ruft er das Programm vom Server ab, jedoch schließt es sich dennoch sofort.
Bitte warten ..
Mitglied: 76109
10.07.2010 um 16:31 Uhr
Hallo Manny1988!

müsste das nicht eher etwas in dieser Art sein?:
01.
 class Program 
02.
    {        
03.
        static void Main(string[] args) 
04.
05.
            Process p = new Process(); 
06.
 
07.
            p.StartInfo.FileName = "\\\\b7serve\\Programme\\DFC.exe"; 
08.
            p.StartInfo.Arguments = "get /isfrozen"; 
09.
            p.StartInfo.UseShellExecute = false; 
10.
            p.StartInfo.RedirectStandardOutput = true; 
11.
            p.WaitForExit(); 
12.
 
13.
            Console.WriteLine(p.StandardOutput.ReadToEnd()); 
14.
15.
    }
Wobei die Codezeile 11 den anderen Prozess startet, auf dessen Beendigung wartet und im Anschluß der Std-Out gelesen wird?

Gruß Diete
Bitte warten ..
Mitglied: LotPings
10.07.2010 um 19:31 Uhr
Zitat von 76109:
müsste das nicht eher etwas in dieser Art sein?:
snip
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
Bitte warten ..
Mitglied: 76109
10.07.2010 um 21:27 Uhr
Hallo LotPings!

Mhm, dann hätte ich Deinen Info-Link wohl besser vorher lesen sollen

Gruß Dieter
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
C und C++
gelöst IF Abfrage funktioniert nicht mehr (2)

Frage von pablovic zum Thema C und C ...

Windows Server
Server 2012 R2 Cleanmgr.exe mit Systemdateien bereinigen? Wie? (4)

Frage von busteron zum Thema Windows Server ...

Datenbanken
gelöst SQL-Abfrage - DISTINCT - letztes Datum (3)

Frage von emeriks zum Thema Datenbanken ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...

Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...