2012-05-03 9 views
13

Io uso GetEnvironmentString() per ottenere le variabili di ambiente del programma.Quali sono queste strane variabili d'ambiente?

Ogni programma ha come risultato del primo:

=::=::\ 

Non so che cosa vuol dire?

Ecco il codice:

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

Anche se cominciamo messa in vendita di tali variabili che avremmo visto cose del genere:

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

D'altra parte, getenv("=ExitCode") o getenv("=C:") restituisce null.

È possibile fornire una documentazione adeguata di questa "funzione", ad esempio getenv() ignora tali stringhe e come tali valori devono essere trattati?

+1

Mostraci il codice. – Nick

+2

@Nick Tutto ciò che devi fare è chiamare 'GetEnvironmentStrings()' –

+0

Immagino che volessi controllare cosa stava facendo con il valore di ritorno per ottenere la stringa fornita. Inoltre, supponi di avere un PC Windows :) – Nick

risposta

8

Sono gli avanzi da cmd.exe che emulano la gestione della directory di ms-dos, in pratica hanno poco uso e sono più arcaici di qualsiasi altra cosa. In sostanza, tiene traccia di una directory corrente per unità e viene mantenuta come variabile di ambiente per passare facilmente ad altri processi.

+0

La domanda è più per la documentazione di come ad esempio getenv dovrebbe gestirli ecc. Puntatori ai documenti richiesti. – Artyom

+2

@Artyom, penso che il take-away sia che qualsiasi cosa che inizia con '=' è privato della shell e intenzionalmente non documentato, e dovrebbe essere ignorato. –

+0

@MarkRansom il problema è che queste stringhe appaiono nella lista GetEnvironmentStrings e un simile comportamento sembra non documentato su come non gestirle – Artyom

Problemi correlati