3

管理されたネイティブdllをC#アプリケーションにロードしようとしています。PATH環境変数を設定して、アプリケーションがロードするdllを見つけられるようにします。C ++ではそれは簡単ですが、C#プロジェクトでそれを行うにはどうすればよいですか?(ちなみに、私はVS2012、.NET、WPFを使用しています)

4

2 に答える 2

5

Environment.SetEnvironmentVariable()を使用します。

string currentPath = Environment.GetEnvironmentVariable("path");
Environment.SetEnvironmentVariable("path",currentPath + ";c:\path_to_libraries");

これは現在のプロセスの範囲内にあることに注意してください。永続的な環境変数 (ユーザーまたはマシン スコープ) を設定する場合は、Environment.SetEnvironmentVariable(string, string, EnvironmentVariableTarget)オーバーロードを使用します。 そのリファレンスについては、こちらを参照してください。

于 2013-01-30T14:15:12.107 に答える
1

このことに注意してください。System.Environment.SetEnvironmentVariable("windir", System.Environment.GetEnvironmentVariable("SystemRoot"), EnvironmentVariableTarget.User); など、ターゲットを明示的に設定します。

ターゲットを設定しなかった場合、Windows セッションで非常に奇妙なことが起こり、ログオフしてログインするか、再起動する必要さえありました。したがって、この変更が実際にマシンまたはプロセス レベルで行われる場合を除き、デフォルトで満足のいく結果が得られると想定しないでください。

于 2013-11-13T23:55:24.750 に答える