Jeśli wykonuję set PATH=%PATH%;C:\\Something\\bin
z wiersza poleceń ( cmd.exe
), a następnie wykonuję echo %PATH%
, widzę ten ciąg dodany do PATH. Jeśli zamknę i otworzę wiersz poleceń, tego nowego ciągu nie ma w PATH.
Jak mogę trwale zaktualizować PATH z wiersza poleceń dla wszystkich procesów w przyszłości, a nie tylko dla bieżącego procesu?
Nie chcę tego robić, przechodząc do Właściwości systemu → Zaawansowane → Zmienne środowiskowe i aktualizując ścieżkę w tym miejscu.
To polecenie musi być wykonane z aplikacji Java (zobacz moje inne pytanie ).
Runtime.getRuntime().exec("my command");
Odpowiedzi:
Dokumentację, jak to zrobić, można znaleźć w witrynie MSDN . Kluczowy fragment jest następujący:
Pamiętaj, że Twoja aplikacja będzie potrzebować podwyższonych uprawnień administratora, aby móc modyfikować ten klucz.
W komentarzach wskazujesz, że z przyjemnością zmodyfikowałbyś tylko środowisko dla każdego użytkownika. Zrób to, edytując wartości w HKEY_CURRENT_USER \ Environment . Tak jak poprzednio, upewnij się, że nadajesz
WM_SETTINGCHANGE
wiadomość.Powinieneś być w stanie zrobić to z łatwością z poziomu aplikacji Java, używając klas rejestru JNI.
źródło
HKEY_CURRENT_USER\Environment
aby uniknąć wymogu podniesienia.requestedExecutionLevel
sięrequireAdministrator
w pliku manifestu aplikacji.Możesz użyć:
Jednak
setx
spowoduje obcięcie przechowywanego ciągu do 1024 bajtów, potencjalnie uszkadzając PATH./M
zmieniPATH
wHKEY_LOCAL_MACHINE
zamiastHKEY_CURRENT_USER
. Innymi słowy, zmienna systemowa zamiast użytkownika. Na przykład:Musisz pamiętać, że nowa PATH nie jest widoczna w Twoim obecnym
cmd.exe
.Ale jeśli spojrzeć w rejestrze lub na nowy
cmd.exe
z"set p"
was może zobaczyć nową wartość.źródło
setx
zmiany ścieżki komputera zamiast ścieżki użytkownika?/m
na końcu polecenia, na Windows XP i 7. Nie próbowałem go jednak.setx
Wystąpił błąd podczas wykonywania polecenia „Domyślna opcja nie może być dłuższa niż„ 2 ”czas”. Jak to ominąć?Przestrzegam przed użyciem polecenia
zmodyfikować zmienną PATH ze względu na „cechę” jej implementacji. W wielu (większości?) Instalacjach w dzisiejszych czasach zmienna będzie długa -
setx
skróci przechowywany ciąg do 1024 bajtów, potencjalnie uszkadzając PATH (patrz dyskusja tutaj ).( Zapisałem się specjalnie, aby oznaczyć ten problem, więc brakuje mi reputacji witryny, aby bezpośrednio komentować odpowiedź opublikowaną 2 maja 2012 r. Dziękuję beresfordt za dodanie takiego komentarza )
źródło
Ten skrypt Pythona [*] robi dokładnie to:
Poniżej znajduje się kilka przykładów użycia, zakładając, że został on zapisany w pliku o nazwie
setenv.py
gdzieś w bieżącej ścieżce. Zauważ, że w tych przykładach nie miałem uprawnień administratora , więc zmiany dotyczyły tylko drzewa rejestru mojego lokalnego użytkownika:[*] Na podstawie: http://code.activestate.com/recipes/416087-persistent-environment-variables-on-windows/
źródło
Dla celów informacyjnych, dla każdego, kto szuka sposobu zmiany ścieżki za pomocą kodu, cytuję przydatny post napisany przez programistę Delphi z tej strony internetowej: http://www.tek-tips.com/viewthread.cfm?qid=686382
źródło
W sieci firmowej, w której użytkownik ma ograniczony dostęp i korzysta z aplikacji przenośnych, istnieją następujące sztuczki wiersza poleceń:
reg query "HKEY_CURRENT_USER\Environment"
. Użyj"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
dla LOCAL_MACHINE.reg add "HKEY_CURRENT_USER\Environment" /v shared_dir /d "c:\shared" /t REG_SZ
. UżyjREG_EXPAND_SZ
dla ścieżek zawierających inne zmienne %%.reg delete "HKEY_CURRENT_USER\Environment" /v shared_dir
.źródło
Ten skrypt http://www.autohotkey.com/board/topic/63210-modify-system-path-gui/
zawiera wszystkie niezbędne wywołania interfejsu API systemu Windows, które można ponownie dostosować do swoich potrzeb. W rzeczywistości jest to GUI AutoHotkey do łatwej zmiany ŚCIEŻKI systemu. Musi być uruchomiony jako administrator.
źródło