¿Cuáles son estas extrañas variables de entorno?

Yo uso GetEnvironmentString() para obtener las variables de entorno del progtwig.

Cada progtwig tiene tal resultado en el primero:

 =::=::\ 

No sé lo que significa?

Aquí está el código:

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

Además, si comenzamos a enumerar tales variables, podríamos ver cosas como:

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

Por otro lado, getenv("=ExitCode") o getenv("=C:") devuelve NULL.

¿Puede proporcionar una documentación adecuada de esta “característica”, por ejemplo, getenv() ignora tales cadenas y cómo deben tratarse dichos valores?

Son rests de cmd.exe que emulan el manejo de directorios de ms-dos, básicamente tienen poco uso y son más arcaicos que cualquier otra cosa. Esencialmente, realiza un seguimiento de un directorio actual por unidad, y se mantiene como una variable de entorno para pasar a otros procesos con facilidad.