en / de
AI
Expertisen
Methoden
Dienstleistungen
Referenzen
Jobs & Karriere
Firma
Technologie-Trends TechCast WebCast TechBlog News Events Academy

Vorsicht im Umgang mit Arbeitsverzeichnis und Umgebungspfad

Szenario

Nehmen wir an, wir haben folgende Umgebung:

 

Windows Command-Line

Wenn man sich in der Konsole im Arbeitsverzeichnis „C:\temp\folder1“ befindet und „app.exe“ ausführt, dann wird „Ich bin App1“ ausgegeben. Das heisst das Arbeitsverzeichnis hat Vorrang vor der Path-Umgebungsvariablen.
Command-Line

Windows PowerShell

Versucht man das gleiche mit Powershell, dann wird „Ich bin App 2“ ausgegeben.
rr_001_002_PowerShell
Auf den ersten Blick könnte man meinen, dass in PowerShell die PATH-Umgebungsvariable Vorrang hätte vor dem Arbeitsverzeichnis. Allerdings liegt dieses Verhalten vielmehr daran, dass in PowerShell nur EXE-Dateien aus dem Umgebungspfad (Path-Umgebungsvariable) direkt ausgeführt werden können. Um auf eine EXE-Datei im aktuellen Verzeichnis zuzugreifen, verwendet man den Präfix „.\“. In unserem Beispiel würde also „.\app.exe“ den Output „Ich bin App 1“ liefern.

C# – Process.Start

Versucht man das gleiche in C# mit Process.Start zu implementieren, scheint es sich genauso zu Verhalten wie in der Windows Command-Line.

var startInfo = new ProcessStartInfo(«app.exe»);
startInfo.WorkingDirectory = @»c:\temp\folder1″;
Process.Start(startInfo);

C#
Häufig benötigt man allerdings in C# den Output des Programms und setzt das „UseShellExecute“ Property auf „false“, damit man den Standard-Output lesen kann. So wird nun aber wieder „Ich bin App 2“ ausgegeben.

var startInfo = new ProcessStartInfo(«app.exe»);
startInfo.WorkingDirectory = @»c:\temp\folder1″;
startInfo.UseShellExecute = false;
Process.Start(startInfo);

C# - UseShellExecute = false

Auch hier könnte man nun denken, dass die PATH-Umgebungsvariable Vorrang hätte vor dem Arbeitsverzeichnis. Allerdings liegt auch in diesem Fall der Grund woanders. Das Setzen von UseShellExecute auf „false“ bewirkt nämlich, dass das Arbeitsverzeichnis nur für den Prozess gilt, aber nicht zum Auffinden der EXE-Datei verwendet wird.

Kommentare

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Newsletter - aktuelle Angebote, exklusive Tipps und spannende Neuigkeiten

 Jetzt anmelden

Copyright © 2025 Noser Engineering AG – Alle Rechte vorbehalten.

NACH OBEN
Privacy Policy Cookie Policy
Zur Webcast Übersicht