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