Forum: PC-Programmierung Befehl in Windows Shell ausführen


von peter k aus d (Gast)


Lesenswert?

Moin,
ich möchte einen Remote-PC neu starten. Wenn ich den Inhalt (shutdown -r 
-m \\PC) direkt in die Shell eingebe funktioniert es. Aus C# allerdings 
nicht. Es kommt aber auch kein Fehler. Woran kanns liegen?

Process.Start("shutdown -r -m \\PC");

von Yalu X. (yalu) (Moderator)


Lesenswert?

Ich schätze, es muss
1
Process.Start("shutdown -r -m \\\\PC");

heißen (also mit 4 Backslashes).

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Erst mal musst du in Strings \ doppelt schreiben, also \\\\PC ansonsten 
ist es häufig Hilfreich sich den Output des Prozesse ausgeben zu lassen, 
eventuell musst die die Parameter auch separat setzen.

von Peter II (Gast)


Lesenswert?

peter k aus d schrieb:
> Es kommt aber auch kein Fehler. Woran kanns liegen?
> Process.Start("shutdown -r -m \\PC");

schwer zu sagen, hilfreich ist dafür die ausgabe von shutdown mal 
anzeigen zu lassen. Du musst dafür die stdout und stderror von dem neuen 
Prozess auslesen.

von Peter II (Gast)


Lesenswert?

sinnvoller ist es aber das ganze über die windows api zu machen, dann 
bekomsmt du auch richtige fehlermeldungen

http://msdn.microsoft.com/en-us/library/aa376883(v=vs.85).aspx

von Yalu X. (yalu) (Moderator)


Lesenswert?

Nachtrag zu oben: Schau dir die Doku zu Process.Start genauer an. Die 
Befehlsargumente muss man wohl in einem zweiten String an die Methode 
übergeben.

von *guest* (Gast)


Lesenswert?

Ich habe es jetzt mit Process.Start("shutdown", "-r -m \\\\PC"); 
probiert.

Geht leider immer noch nicht. Aus der Windows API würde ich es erst 
einmal ungerne machen, der PC darf auf keinen Fall ganz ausgehen, und 
ich würde es dann lieber mit shutdown machen, weil ich mir da exakt 
sicher bin, dass es funktioniert ;)

Wie lasse ich mir denn die Fehler ausgeben? Ich kann so viele 
Console.Read(); an das Programmende ranstellen, das Programm wird nach 
anzeige der cmd trotzdem sofort geschlossen...

von *guest* (Gast)


Lesenswert?

Edit: War mein Fehler, es funktioniert jetzt alles. Danke für Eure 
Mühe!!! Mit Euren Tipps klappt es!

So muss es aussehen: Process.Start("shutdown", "-r -m \\\\PC-NAME");

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.