Windows 7 & Lokales System: %PATH% Umgebungsvariable nicht vollständig

Momentan bin ich dabei, TeamCity aufzusetzen und die von uns benutzten Programmiersprachen inklusive der Unit-Testing-Frameworks zu integrieren.
Für PHPUnit gibt es zwei ganz passable XML-Dateien (Ant-Script zum Ausführen von PHPUnit & PHPUnit-Beispielkonfiguration), die an sich auch funktionieren. Ich testete nach einigen Anpassungen die Konfiguration mit Ant und PHPUnit unter meinem Benutzeraccount und war zufrieden. Nachdem ich dann allerdings das Projekt in TeamCity eingebunden hatte, lieferten mir die Log-Dateien (phpunit.txt etc. die im verlinkten Ant-Script hinterlegt sind) folgenden Fehler zurück: “Der Befehl “phpunit.bat” ist entweder falsch geschrieben oder konnte nicht gefunden werden.“.

Höchst seltsam – ich hatte zuerst McAfee in Verdacht, die Ausführung von Batchdateien unter dem Benutzeraccount Lokales System (denn darunter läuft TeamCity standardmäßig) durch eine Richtlinie zu unterbinden. Allerdings funktionierte es mit deaktiviertem Virenscanner immer noch nicht. Also gab ich in der build.xml den absoluten Pfad zur phpunit.bat und siehe da: das klappte.
Der Verdacht lag nun nahe, das phpunit.bat nicht in einem Verzeichnis der Umgebungsvariablen %PATH%  des Systems definiert worden war, sondern in der PATH-Variable meines Benutzeraccounts. Dem war allerdings auch nicht so. phpunit.bat lag im %PATH% des Systems.
Ich fügte in der build.xml zum Testen also Folgendes ein

<exec executable="cmd" failonerror="false" output="${buildDir}/logspath.txt">
	<arg line="/c echo %PATH%" />
</exec>

und bekam in der path.txt einen äußerst kurzen Eintrag mit zwei Ordnern geloggt, die ich so nicht bewusst eingetragen habe.
Ein kurzes Suche in der Registry brachte dann das Ergebnis, dass die %PATH%-Variable unter HKEY_USERS/.DEFAULT/Environment/PATH definiert wird.
Nachdem ich wusste, wonach ich zu suchen hatte, fand ich auch schnell die passende Erklärung.

Zusammenfassung: Dienste, die unter dem Account Lokales System (Local System) laufen und auf eine .bat-, .exe- oder .cmd-Datei zugreifen wollen, die innerhalb der %PATH%-Umbgebungsvariable liegen, können dies nur tun, wenn der Pfad unter HKEY_USERS/.DEFAULT/Environment/PATH eingetragen ist.
Die Optionen Benutzervariablen (logisch) und Systemvariablen haben für den Account unter keine Auswirkungen.

Leave a reply

Your email address will not be published.

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>