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