2012-05-03 16 views
13

Używam GetEnvironmentString(), aby pobrać zmienne środowiskowe programu.Jakie są te dziwne zmienne środowiskowe?

Każdy program ma taki wynik w pierwszym:

=::=::\ 

Nie wiem, co to znaczy?

Oto kod:

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

Również jeśli rozpoczniemy wystawianie takich zmiennych chcielibyśmy zobaczyć rzeczy jak:

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

Z drugiej strony, getenv("=ExitCode") lub getenv("=C:") zwraca NULL.

Czy możesz podać odpowiednią dokumentację tej "funkcji", na przykład , na przykład getenv(), ignoruje takie ciągi i jak należy traktować takie wartości?

+1

Pokaż nam kod. – Nick

+2

@Nick Wszystko, co musisz zrobić, to zadzwonić do 'GetEnvironmentStrings()' –

+0

Sądzę, że chciałem sprawdzić, co robił z wartością zwracaną, aby uzyskać dostarczony ciąg znaków. Ponadto - zakładasz, że mam Windows PC :) – Nick

Odpowiedz

8

Są to resztki z emulacji katalogu cmd.exe, lecz nie mają większego sensu i są bardziej archaiczne niż cokolwiek innego. Zasadniczo śledzi bieżący katalog na dysku i jest przechowywany jako zmienna środowiskowa, aby łatwo przejść do innych procesów.

+0

Pytanie dotyczy raczej dokumentacji, jak na przykład getenv powinien nimi manipulować itp. Wskazuje wymagane dokumenty. – Artyom

+2

@Artyom, myślę, że na wynos jest to, że wszystko zaczynające się od '=' jest prywatne dla powłoki i celowo nieudokumentowane i powinno być zignorowane. –

+0

@MarkRansom Problem polega na tym, że te ciągi znaków pojawiają się na liście GetEnvironmentStrings i takie zachowanie wydaje się być nieudokumentowane pod względem niejasności co do sposobu ich obsługi. – Artyom

Powiązane problemy