Windows Dienste und Umgebungsvariablen
Google Suchergebnisse
Folgende Begriffe wurden gesucht:
Bitte oben einen Suchbegriff anklicken um hier zum ersten Treffer zu gelangen (wenn vorhanden) oder zurück gehen zur Trefferliste aller Ergebnisse.
Da bin ich doch gestern auf einen Umstand hereingefallen, der mir als solcher nicht klar war ![]()
Aus einem PHP-Prozess (unter Apache) musste ich ein Shell-Command absetzen, welches eine Java-Routine zur Erzeugung eines PDF-Dokumentes aus einer FOP-Datei anstößt. Das Problem war, dass nach einer Neuinstalltion der Java-Zugriff nicht in der PATH-Umgebungsvariable (SYSTEM) eingetragen war und somit der simple Aufruf
java -cp ....
auf einen Fehler
'java' is not recognized as an internal or external command, operable program or batch file
stieß. … *hmpf*
Nun gut – die Lösung schien recht simpel – einfach den Pfad zum Java-Executable in die PATH-Umgebungsvariable eingetragen eine Shell geöffnet und schwups – der Aufruf klappte. Super – schnell den Apache durchgestartet und nochmals das PHP-Skript getestet – gleicher Fehler wie zuvor … WHAAAT ![]()
Nachdem ich ein paar Versuche hinter mich gebracht und x-mal den Apache-Dienst neugestartet hatte, blieb mir als letzte mögliche Lösung ein reboot des Systems (was unter Windows ja schon häufiger zum Ziel führte
) – und siehe da – nach dem reboot lief das Skript wieder einwandfrei *juppi*
Aber warum??
Nun – Martin‘s Theorie hat sich heut morgen dann sehr schnell bestätigt! Die Dienste, die unter Local-System-Account gestartet werden, erben ihre Umgebung aus dem Services.exe Prozess, welcher bei Systemstart (und somit mit den ursprünglichen PATH-Einstellungen) gestartet wird. Da dieser nicht auf Windows-Messaging aufsetzt, erhält er keine Benachrichtigung, dass sich die Umgebung geändert hat und kann dies somit nicht weiterreichen – also muss das System neu gebootet werden. Wenn man’s weiß – leuchtet es ein – aber gut gelöst ist es nicht ![]()
Wer mag, kann sich das Ganze auch in der Microsoft Knowledgebase nachlesen.
Vielleicht wurde dieser Umstand ja unter Windows Vista behoben, da es nicht in der Liste der betroffenen Betriebssysteme auftaucht – es wäre wünschenswert – auch wenn Vista nicht den Weg auf einen meiner Rechner finden wird ![]()