Gibt es eine Möglichkeit, eine Anwendung zum Testen von Code von Umgebungsvariablen zu isolieren?

Gibt es eine Möglichkeit, eine Anwendung zum Testen von Code von Umgebungsvariablen zu isolieren?

Ich entwickle eine Anwendung unter Windows, die DLLin der Systemvariable verfügbare Dateien verwendet PATH. Diese DLLDateien befinden sich in meiner PATHEntwicklungsumgebung. Die Anwendung selbst ist jedoch portabel und wird mit ihren eigenen Abhängigkeiten ausgeliefert. Gibt es eine Möglichkeit, Umgebungsvariablen einer Anwendung/eines Prozesses zu verbergen, sodass ich meinen Code auf Portabilität testen kann, ohne globale Variablen ändern zu müssen?

Antwort1

Erstellen Sie eine Bat/cmd-Datei und überschreiben Sie PATH. Starten Sie dann Ihre Anwendung aus derselben Bat/cmd-Datei.

@echo off

Path=C:\TestPath

REM test it that is was overridden 
echo %Path%

REM Lunch your app below
c:\path\to\your\app.exe

Antwort2

Alex‘ Antwort war hilfreich. Ich habe das in eine PowerShell-Funktion umgewandelt, die ich zu meiner hinzufügen kann, $profiledamit sie immer verfügbar ist:

function sandbox {
    Write-Output "$args"
    $tempPATH = $env:PATH
    $env:PATH = ""
    if ("$args"[0] -eq '"') { iex "& $args" }
    else { iex "$args" }
    $env:PATH = $tempPATH
}

Wenn ich jetzt also aufrufe sandbox SOME_COMMAND, leert die Funktion PATH, führt den Befehl aus und stellt die Variable wieder her.

verwandte Informationen