コードをテストするためにアプリケーションを環境変数から分離する方法はありますか?

コードをテストするためにアプリケーションを環境変数から分離する方法はありますか?

DLL私は、システム変数で利用可能なファイルを使用する Windows 上のアプリケーションを開発していますPATH。これらのDLLファイルは、開発環境の myPATHにあります。ただし、アプリケーション自体は移植可能で、独自の依存関係とともに出荷されます。グローバル変数を変更せずにコードの移植性をテストできるように、アプリケーション/プロセスから環境変数を隠す方法はありますか?

答え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、コマンドを実行して、変数を再び復元します。

関連情報