有没有办法将应用程序与环境变量隔离以进行测试代码?

有没有办法将应用程序与环境变量隔离以进行测试代码?

我正在 Windows 上开发一个应用程序,它利用了DLL系统PATH变量中可用的文件。这些DLL文件位于我PATH的开发环境中。但是,应用程序本身是可移植的,附带有自己的依赖项。有没有办法隐藏应用程序/进程中的环境变量,以便我可以测试代码的可移植性,而无需修改全局变量?

答案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

Alex 的回答很有帮助。我将其转换为 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,运行命令,然后再次恢复变量。

相关内容