dll的环境变量与exe不同

时间:2011-03-01 11:00:06

标签: c++ variables dll environment

我正在调试一个64位应用程序,其中c#exe在Windows 7上使用本机c ++ dll。看起来这两个环境变量是不同的,即使它们都在同一个进程中执行。如何调用System.Environment.SetEnvironmentVariable对getenv()返回的值没有影响?

2 个答案:

答案 0 :(得分:6)

环境变量只是一个数据块,它在启动时由窗口传递给进程。您正在使用的运行时函数(用于System.Environment的BCL和用于getenv的CRT)可能在启动期间创建环境的副本,这意味着它们不在相同的“环境”变量上运行。

从概念上讲,他们必须这样做,因为否则需要某种方式来同步他们访问环境。

答案 1 :(得分:0)

您可以尝试使用以下功能。您需要根据您的要求将EnvironmentVariableTarget传递为http://msdn.microsoft.com/en-us/library/system.environmentvariabletarget.aspx

public SetEnvironmentVariable(     字符串变量,     字符串值,     EnvironmentVariableTarget目标 )