Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
[erledigt] psshutdown per Process.Start ausführen
varron
myCSharp.de - Member



Dabei seit:
Beiträge: 5

Themenstarter:

[erledigt] psshutdown per Process.Start ausführen

beantworten | zitieren | melden

Hallo,

ich habe ein kleines Problem, ich möchte über einen Button ein psshutdown auf einem Remoterechner ausführen, über eine DOS-Box kein Problem aber mit c# klappt es einfach nicht.

hier eine vereinfachte Darstellung, später soll Benutzername, Passwort und IP über eine TextBox variabel sein.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;

namespace Form_und_psshutdown
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            StringBuilder sbArguments = new StringBuilder();
            Process pr = new Process();
            ProcessStartInfo prs = new ProcessStartInfo();

            prs.FileName = @"c:\Windows\System32\cmd.exe";
            prs.Arguments = (@"psshutdown -u Administrator -p Passwort \\10.10.10.200 -r");
            prs.RedirectStandardOutput = true;
            prs.UseShellExecute = false;

            pr.StartInfo = prs;
            pr.Start();

            pr.WaitForExit();
        }
    }
}

Gruß,
Varron
private Nachricht | Beiträge des Benutzers
UZI
myCSharp.de - Member



Dabei seit:
Beiträge: 189

beantworten | zitieren | melden

Wird denn das EULA-Fenster angezeigt oder irgendeine Fehlermeldung geworfen?
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15.482

beantworten | zitieren | melden

Vermute das Standardproblem, wenn man einen Process startet (und dann noch unter einem andren Konto): WorkingDirectory wird nirgends gesetzt.
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo varron,

oder etwas allgemeiner betrachtet: [FAQ] Programm läuft in anderer Umgebung nicht (richtig).

herbivore
private Nachricht | Beiträge des Benutzers
RogerSt
myCSharp.de - Member



Dabei seit:
Beiträge: 60

beantworten | zitieren | melden

Hallo varron

So viel ich weiss, musst du, wenn du über cmd.exe gehst ein /c voranstellen, damit das Kommando ausgeführt wird.
Also einfach ein /c vor psshutdown.

Gruss Roger
private Nachricht | Beiträge des Benutzers
varron
myCSharp.de - Member



Dabei seit:
Beiträge: 5

Themenstarter:

beantworten | zitieren | melden

Hi,

danke für die Antworten aber leider ohne erfolg.

@UZI:
Keine Fehler, Meldung oder ähnliches - es öffnet sich kurz ein DOS-Fenster, dieses schließt sofort wieder und das war es auch schon.

@Abt:
Soweit ich weiß wird wenn kein Directory gesetzt ist das Standard Verzeichnis "%SYSTEMROOT%\system32" gezogen - hier liegen auch die PSEXEC & PSSHUTDOWN Dateien.

@herbivore:
.Net ist installiert und auch als Referenz dem Projekt hinzugefügt.

@RogerST:
Hab es gerade versucht - kein Erfolg :-(

Echt zum Verzweifeln...muss aber irgendwas am Aufruf von psshutdown sein.
Wenn ich einfach nur den Prozess cmd starte macht er es ohne Probleme.

Gtuß,
Varron
private Nachricht | Beiträge des Benutzers
RogerSt
myCSharp.de - Member



Dabei seit:
Beiträge: 60

beantworten | zitieren | melden

Hallo varron

warum start3est du eigentlich psshutdown nicht direkt?

Gruss Roger
private Nachricht | Beiträge des Benutzers
Programmierhans
myCSharp.de - Experte

Avatar #avatar-1651.gif


Dabei seit:
Beiträge: 4.221
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Wieso nicht direkt ?

Rechner runterfahren [==> Code-Snippets für den Shutdown]
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo varron,
Zitat
es öffnet sich kurz ein DOS-Fenster, dieses schließt sofort wieder
verwende /k, um die Fehlermeldung lesen zu können.

herbivore
private Nachricht | Beiträge des Benutzers
varron
myCSharp.de - Member



Dabei seit:
Beiträge: 5

Themenstarter:

beantworten | zitieren | melden

So hat es jetzt funktioniert :-)


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;

namespace Form_und_psshutdown
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            StringBuilder sbArguments = new StringBuilder();
            Process pr = new Process();
            ProcessStartInfo prs = new ProcessStartInfo();

            prs.FileName = @"c:\Windows\System32\psshutdown.exe";
            prs.Arguments = (@"-u Administrator -p Passwort \\10.10.10.200 -r");
            prs.RedirectStandardOutput = true;
            prs.UseShellExecute = false;
            prs.CreateNoWindow = true;

            pr.StartInfo = prs;
            pr.Start();

            pr.WaitForExit();
        }
    }
}

Thema kann geschlossen werden.
Danke an alle die mir geholfen haben.

Moderationshinweis von gfoidl (26.06.2013 - 10:15)

Threads werden normalerweise nur geschlossen, wenn sie gegen die Regeln verstoßen, aber ich habe den Thread als [erledigt] gekennzeichnet.

private Nachricht | Beiträge des Benutzers