我正在调试一个64位应用程序,其中c#exe在Windows 7上使用本机c ++ dll。看起来这两个环境变量是不同的,即使它们都在同一个进程中执行。如何调用System.Environment.SetEnvironmentVariable对getenv()返回的值没有影响?
答案 0 :(得分:6)
环境变量只是一个数据块,它在启动时由窗口传递给进程。您正在使用的运行时函数(用于System.Environment的BCL和用于getenv的CRT)可能在启动期间创建环境的副本,这意味着它们不在相同的“环境”变量上运行。
从概念上讲,他们必须这样做,因为否则需要某种方式来同步他们访问环境。
答案 1 :(得分:0)
您可以尝试使用以下功能。您需要根据您的要求将EnvironmentVariableTarget传递为http://msdn.microsoft.com/en-us/library/system.environmentvariabletarget.aspx。
public SetEnvironmentVariable( 字符串变量, 字符串值, EnvironmentVariableTarget目标 )