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

2 ответа2

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
0

Ответ Алекса был полезен. Я преобразовал это в функцию 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 , запускает команду и снова восстанавливает переменную.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .