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