2012-05-03 17 views
13

Uso GetEnvironmentString() para obtener las variables de entorno del programa.¿Cuáles son estas extrañas variables de entorno?

Cada programa tiene como resultado en la primera:

=::=::\ 

No sé qué quiere decir?

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); 

también si comenzamos lista de variables tales veríamos 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")getenv("=C:") o devuelve null.

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

+1

Muéstranos el código. – Nick

+2

@Nick Todo lo que necesita hacer es llamar a 'GetEnvironmentStrings()' –

+0

Supongo que quería verificar lo que estaba haciendo con el valor devuelto para obtener la cadena proporcionada. Además, supones que tengo una PC con Windows :) – Nick

Respuesta

8

Son restos de cmd.exe que emulan el manejo de directorios de ms-dos, básicamente tienen poco uso, y son más arcaicos que nada. 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.

+0

La pregunta es más sobre la documentación de cómo, por ejemplo, getenv debería manejarlos, etc. Se requieren punteros a los documentos. – Artyom

+2

@Artyom, creo que todo lo que comienza con '=' es privado para el shell e intencionalmente no documentado, y debe ser ignorado. –

+0

@MarkRansom el problema es que estas cadenas aparecen en la lista GetEnvironmentStrings y tal comportamiento parece estar sin documentar si no está claro cómo manejarlas – Artyom

Cuestiones relacionadas