Laden...

[gelöst] Remoteaufruf von PNPUTIL.exe mit PSexec funkioniert nicht

Erstellt von Trekki1990 vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.744 Views
Trekki1990 Themenstarter:in
503 Beiträge seit 2008
vor 9 Jahren
[gelöst] Remoteaufruf von PNPUTIL.exe mit PSexec funkioniert nicht

Hallo,

ich versuche schon seit geraumer Zeit herauszufinden was nicht funktioniert.
Ich versuche mit folgendem Code einen Befehl über PSEXEC.exe an pnputil zu schicken.
Das funktioniert wohl auch, meine Anwendung schmeißt mir keine Exception. Das Konsolenfenster geht auf, aber dann passiert nix weiter.

Wenn ich den Befehl in der CMD manuell eingebe, funktioniert es so wie es soll.
Übersehe ich was?

Wäre für jeden Tipp dankbar. 😃

Hier mein Code:


if (txt_pcnummer.Text != "")
            {
                try
                {
                    Process proc = new Process();

                    proc.StartInfo.UseShellExecute = false;
                    proc.StartInfo.RedirectStandardError = true;
                    proc.StartInfo.FileName = Path.GetTempPath() + @"\PsExec.exe";
                    proc.StartInfo.CreateNoWindow = false;
                    proc.StartInfo.Arguments = @" /accepteula \\" + txt_pcnummer.Text + @" -u DOMAIN\USER -p PASSWORD c:\windows\system32\pnputil.exe -e > c:\printDriver.txt";

                    proc.Start();

                    err = proc.StandardError.ReadToEnd();

                    proc.WaitForExit();
                    proc.Close();
                }
                catch (Exception ex) { MessageBox.Show(ex.Message + "\n\n" + err, "Error", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); }
                finally { if (err != "") MessageBox.Show("Fehler: \n\n" + err); }
            }

Gruß trekki

16.835 Beiträge seit 2008
vor 9 Jahren

ProcessStartInfo.WorkingDirectory-Eigenschaft wirste wahrscheinlich dafür setzen müssen.

Trekki1990 Themenstarter:in
503 Beiträge seit 2008
vor 9 Jahren

Hallo vielen Dank für deine Antwort Abt.
Ich habe es inzwischen anders lösen können. Ganz ohne ein Programm zu schreiben.

Anforderung: Veralteter Druckertreiber auf Windows 7 PC. Entfernen und neu hinzufügen des Netzwerkdruckers führt leider nicht zur Aktualisierung des Treibers. Alte Version wird weiterhin genutzt. Mit dem Script kopiere ich den neuen Treiber auf den PC, installiere einen lokalen Testdrucker mit dem neuen Treiber und lösche diesen wieder (dadurch wird die Aktualisierung des Treibers erzwungen). Netzwerkdrucker wieder installieren, alles schick 😃

Wen es interessiert hier das Script (muss natürlich auf die eigene Umgebung angepasst werden).
Benötigt wird im selben Verzeichnis noch die PSEXEC.exe

BAT-File 1 für den Aufruf der ganzen Aktion (start_repair.cmd):


@echo off
cls

echo Bitte Computernamen oder IP Adresse eingeben:
set /p Computer=

copy repair.cmd \\%Computer%\C$
psexec.exe -u DOMAIN\USER -p PASSWORD \\%Computer% C:\repair.cmd

BAT-File 2 für die eigentliche "Reparatur" (repair.cmd):


@echo off
echo DRUCKERREPARATUR IM GANGE. BITTE NICHT UNTERBRECHEN!!!
echo Drucker DRUCKERNAME entfernen...
rundll32 printui.dll,PrintUIEntry /q /dn /n \\SERVER\DRUCKERFREIGABENAME
net stop spooler
pnputil -i -a "PFAD_ZUR_INF-DATEI"
net start spooler
rundll32 printui.dll,PrintUIEntry /if /b "Test_Printer" /f "PFAD_ZUR_INF-DATEI" /r "LPT1:" /m "DRUCKERMODELL_AUS_DER_INF_DATEI"
rundll32 printui.dll,PrintUIEntry /q /dl /n Test_Printer
echo Drucker DRUCKERNAME werden installiert...
rundll32 printui.dll,PrintUIEntry /q /in /n \\SERVER\DRUCKERFREIGABENAME
rundll32 printui.dll,PrintUIEntry /q /y /n \\SERVER\DRUCKERFREIGABENAME

Eventuell hilft dies dem einen oder anderen weiter.

Gruß trekki