SetEnvironmentVariable() 似乎没有设置可以通过 getenv() 检索的值

SetEnvironmentVariable() does not seem to set values that can be retrieved by getenv()

我有一个 EXE,它在启动时通过 Windows API 环境变量 (即:MAGICK_CODER_MODULE_PATH=xxxSetEnvironmentVariable().

当我在 Process Explorer(来自 SysInternals)中查看设置为我的 EXE 的环境变量列表时,我可以看到我之前设置的环境变量(MAGICK_CODER_MODULE_PATH),所以此时一切看起来都很好.

然后我指示我的 EXE 通过 LoadLibrary() 加载一个 DLL。稍后当此 DLL 尝试通过 getenv("MAGICK_CODER_MODULE_PATH") 获取我的环境变量的值时,问题出现了:it returns NULL!这怎么可能?看起来 getenv() 忽略了我之前用 SetEnvironmentVariable().

设置的值

注:

您正在混合 APIs:Windows' SetEnvironmentVariable 绕过 C++ 运行时,因此存储在您的程序中的环境副本不会更新。稍后的 getenv 调用会查看此副本,但没有找到您的更改。

两次调用使用相同的 API 级别。 getenv and _putenv, or use the Windows API GetEnvironmentVariable and SetEnvironmentVariable.