这些奇怪的环境variables是什么?

我使用GetEnvironmentString()来获取程序的环境variables

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

 =::=::\ 

我不知道这是什么意思?

这里是代码:

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

另外,如果我们开始列出这些variables,我们会看到如下内容:

 =::=::\ =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。

你能否提供这个“function”的适当的文档,例如getenv()忽略这样的string,以及如何处理这些值?

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