Windows Vista/7/8 IPS_ExecuteEx funktioniert nicht

Hallo,

mein IPS Server ist jetzt von Windows XP auf Windows 7 migriert.
Seitdem geht mein remote Shutdown nicht mehr. Ich habe den Session Parameter schon von 0 auf 1 gestellt:

IPS_ExecuteEX("c:/program files/WZshutdown.cmd", "", false, false,1);

In der WZshutdown.cmd steht:

psshutdown -d -f -t 3 \\192.168.0.40

Direkt aus der CMD funktioniert alles, über IPS passiert einfach gar nicht.
Hat jemand eine Idee?

Danke, Andreas!

Hast es mal direkt versucht auszuführen? Gibt es eine Fehlermeldung?


IPS_ExecuteEx('psshutdown.exe', '-d -f -t 3 \\192.168.0.40', false, false,1);

paresy

Ich musste es so ausführen, sonst findet er komischerweise die psshutdown.exe nicht:

IPS_ExecuteEx('c:/windows/system32/psshutdown.exe', '-d -f -t 3 \\192.168.0.40', false, false,1);

Es gab keine Fehlermeldung, aber der Shutdown funktioniert einfach nicht.

Kann der Systemaccount, unter dem der IPS Dienst läuft evtl. einen Windows 7 Rechner nicht runterfahren?
Mit der cmd per Administratoraccount funktioniert es ja.

Jetzt, wo du es sagst… Der System-Account darf, ab Vista, soweit ich mich erinnere, nicht auf Netzwerk Shares zugreifen. Wahrscheinlich betrifft es auch Remote-Shutdown. Du kannst versuchen den Dienst als Benutzeraccount laufen zu lassen. Musst dann aber IPS_Execute nutzen.

paresy

Ja, so geht es.
Hat es irgendwelche Nachteile, wenn IPS unter dem Admin Account läuft und das man IPS_Execute verwendet?

Es geht auch mit IPS als Systemaccount und:

IPS_ExecuteEx(‚c:/windows/system32/runas.exe‘, ‚/user:Haus /savecred „c:/program files/WZshutdown.cmd“‘, false, false,1);

Könnte auch mit einer kleineren Stufe der Benutzerkontensteuerung funktionieren. Für Remotemaschinen mit aktivierter Benutzerkontensteuerung (UAC) muss ein Eintrag in der Registry gemacht werden.

kleine Ergänzung zu Smudo’s Beitrag:

ich denke er meint diesen Registry-Eintrag.

Gruss
Tinu

ich denke er meint diesen Registry-Eintrag.

Ja denk ich auch.
Der hat aber bezüglich meines „Shutdown“-Problems nichts gebracht.
Man muß diesen jedoch setzen, um die Admin Netzfreigaben (C$/D$…) unter Windows 7 überhaupt zugreifbar zu machen!:mad: Der totale Witz, wer braucht schon (administrativ) Netzlaufwerke in Windows!:confused: Wenn Microsoft versucht etwas sicher zu machen, endet es meist in sowas Unglaublichen.

Ja, den meinte ich. Da es aber nicht primär um die Remote-Steuerung ging, hab ich das erstmal nicht weiter ausgeführt.

Und die UAC mal zum testen ausschalten hat auch nicht zum Erfolg geführt?

Und die UAC mal zum testen ausschalten hat auch nicht zum Erfolg geführt?

Hallo, danke, mein Problem wurde mittels „runas…“ gelöst (siehe oben).:slight_smile:
UAC ausschalten hatte dabei nichts gebracht.

mit dem „runas-Befehl“ ging es bei mir auch !
Wollte nur ergänzen, dass ich den Parameter /noprofile noch ergänzen musste, damit ich nicht nach dem Passwort des aktuellen Benutzerprofils gefragt wurde.

Und ich war anfangs so dusselig, dass ich dachte „savecred“ in dem Befehl wäre das Passwort :loveips:… für Andere, die sowas auch denken: das ist falsch … man muss es als /savecred eingeben :smiley:

Und täglich grüßt das Murmeltier…

Nach einer Migration auf Windows 8 (64 Bit) gibt es wieder das gleiche Problem:
IPSExecute und IPSExecuteEX funktionieren nicht mehr:

  • Keine Fehlermeldung bei Ausführung, aber es passiert nichts
  • mit runas wie oben beschrieben funktioniert es
  • ich hatte es aber unter Windows 7 (32 Bit) irgendwie dann doch hinbekommen, daß IPSExecute und IPSExecuteEX auch ohne runas funktioniert haben, ich weiß nur nicht mehr wie :mad:
  • unter Windows 7 lief IPS auch als Systemdienst mit gesetzem Häkchen „Datenaustausch zwischen Dienst und Desktop zulassen“, genauso wie jetzt unter Windows 8
  • mit runas funktionierts zwar, Windows vergisst aber manchmal das abgespeicherte Passwort (savecred Option)
  • UAC ist aus

Weiß jemand evtl. weiter?

Danke und Gruß, Andreas

Versuch’s mal mit shell_exec();

Mit IPS_Execute hat’s bei mir irgendwie immer Probleme gegeben.

Viele Gruesse

Adrian

Versuch’s mal mit shell_exec();

Funktioniert bei mir leider auch nicht besser.

Ich hatte damals bei Windows 7 ziemlich viel in der Registry „rumgemacht“ bis es dann funktioniert hatte, aber leider nichts dokumentiert.

Ich verwende jetzt erstmal „runasspc“, das speichert das Kennwort verschlüsselt in einer Datei ab und Windows kann es somit nicht mehr vergessen wie bei „runas“.:rolleyes:


IPS_ExecuteEx("C:/Windows/notepad.exe", "", true, false, 1);

Das läuft hier auf meinem Windows 8 Enterprise x64 Testversion einwandfrei. Welche Version nutzt ihr?

Ich kann den Fehler nämlich gerade nicht nachstellen. :frowning:

paresy

Das läuft hier auf meinem Windows 8 Enterprise x64 Testversion einwandfrei. Welche Version nutzt ihr?

Ich kann den Fehler nämlich gerade nicht nachstellen.

Also das lief bei mir jetzt auch:

IPS_ExecuteEx(„C:/Windows/notepad.exe“, „“, true, false, 1);

Wenn ich nircmd im system32 Verzeichnis damit starte kommt: Datei nicht gefunden
(Vor ein paar Tagen kam aber sowohl bei IPS_Execute als auch bei IPS_ExecuteEX gar keine Fehlermeldung und es wurde einfach nichts ausgeführt, keine Ahnung was sich jetzt geändert haben soll)
Wenn ich nircmd im program files/tools verzeichnis mit obigen Befehl starte geht alles!!!

Es scheint so, daß bei Windows 8:
IPS_Execute als System Account ausgeführt wird (braucht man also wenn man z.B. einen Dienst starten möchte)
IPS_ExecuteEX im angemeldeten Benutzeraccount ausgeführt wird (deswegen konnte er wohl nicht auf system32 zugreifen)

Je nachdem was man dann ausführen will muß man den entsprechenden passenden Befehl (IPS_Execute oder IPS_ExecuteEX) nehmen…

Mit dem „IPS_Execute“ konnte ich z.B. meine Videos nicht auf das GMX Mediacenter hochladen, da das Verbindungstool nur im Benutzeraccount verfügbar ist…