Есть ли способ изолировать приложение от переменных среды для тестирования кода?

Есть ли способ изолировать приложение от переменных среды для тестирования кода?

Я разрабатываю приложение в Windows, которое использует DLLфайлы, доступные в системной PATHпеременной. Эти DLLфайлы находятся в моей PATHсреде разработки my. Однако само приложение является переносимым и поставляется со своими собственными зависимостями. Есть ли способ скрыть переменные среды от приложения/процесса, чтобы я мог проверить свой код на переносимость без необходимости изменять глобальные переменные?

решение1

Создайте файл bat/cmd и переопределите PATH, затем запустите свое приложение из того же файла bat/cmd.

@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

решение2

Ответ Алекса был полезен. Я преобразовал это в функцию PowerShell, которую я могу добавить в свой, $profileчтобы она всегда была доступна:

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

Теперь, всякий раз, когда я вызываю sandbox SOME_COMMAND, функция очищается PATH, выполняет команду и снова восстанавливает переменную.

Связанный контент