17

GetEnvironmentString()用来获取程序的环境变量。

每个程序在第一个都有这样的结果:

=::=::\

我不知道这是什么意思?

这是代码:

LPWCH lpEnvString=GetEnvironmentStringsW();
 LPWSTR lpszVariable=(LPWSTR)lpEnvString;
 while (*lpszVariable)
 {
     wprintf(L"%s\n",lpszVariable);
     lpszVariable+=wcslen(lpszVariable)+1;
 }
 FreeEnvironmentStringsW(lpEnvString);

此外,如果我们开始列出这些变量,我们会看到如下内容:

=::=::\
=C:=C:\Users\username\value
=ExitCode=00000001
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\artik\AppData\Roaming
CommonProgramFiles=C:\Program Files (x86)\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
...

另一方面,getenv("=ExitCode")getenv("=C:")返回 NULL。

您能否提供有关此“功能”的适当文档,例如getenv()忽略此类字符串以及应如何处理此类值?

4

1 回答 1

12

它们是 cmd.exe 模拟 ms-dos 目录处理的遗留物,它们基本上没有什么用,而且比任何东西都更古老。本质上,它跟踪每个驱动器的当前目录,并作为环境变量保存以轻松传递给其他进程。

于 2012-06-05T01:34:08.193 回答