Set Environment Variable

0

Witam!
Zostałem posiadaczem następującego problemu :

Zmieniam wartość Zmiennej systemowej za pomocą takiego oto kodu:

Environment.SetEnvironmentVariable(name, value, EnvironmentVariableTarget.Machine);

jak sobie zerknę w Zmiennych systemowych na wartość interesującej mnie zmiennej to widzę że wpis został zmieniony. Niestety użycie :

Environment.GetEnvironmentVariable(name)

zwraca mi poprzednią wartość...
Zmiana jest widoczna dopiero po np wylogowaniu. Jeśli modyfikuję wartość zmiennej za pomocą "edytuj" GetEnvironment... zwraca mi aktualną wartość

Próbowałem też edytować wartość poprzez dwa programy :

http://barnyard.syr.edu/~vefatica/#SETENV

i za pomocą narzędzia setx.exe

http://www.microsoft.com/downloads/details.aspx?FamilyId=49AE8576-9BB9-4126-9761-BA8011FABF38&displaylang=en

niestety z marnym skutkiem, jedyny sposób na zmianę wartości bez wylogowywania się jaki znalazłem to "Edytuj".
Ma ktoś jakiś pomysł jak dokonać modyfikacji by była widoczna bez wylogowania?

0

Zamień:

Environment.GetEnvironmentVariable(name);

na

Environment.GetEnvironmentVariable(name, EnvironmentVariableTarget.Machine);

Twoje Get nie działa gdyż pobierasz zmienną z otoczenia procesu, które nie jest aż do przeładowania profilu. Zastosowanie drugiego parametru wymusza pobranie wartości klucza z odpowiedniego miejsca. Poza tym pamiętaj o uprawnieniach - kiedy ustawiasz nowa zmienną dla całej maszyny to musisz posiadać odpowiednie prawa (myślę, że w XP takie coś przejdzie, ale w Win7 na pewno już nie działa - sprawdzony przypadek win7).

PS. Polecam czytać MSDN.

1 użytkowników online, w tym zalogowanych: 0, gości: 1