Wenn ich set PATH=%PATH%;C:\\Something\\bin
über die Befehlszeile ( cmd.exe
) ausführe und dann ausführe, wird echo %PATH%
diese Zeichenfolge dem PATH hinzugefügt. Wenn ich die Befehlszeile schließe und öffne, befindet sich diese neue Zeichenfolge nicht in PATH.
Wie kann ich PATH über die Befehlszeile für alle zukünftigen Prozesse dauerhaft aktualisieren, nicht nur für den aktuellen Prozess?
Ich möchte dies nicht tun, indem ich zu Systemeigenschaften → Erweitert → Umgebungsvariablen gehe und dort PATH aktualisiere.
Dieser Befehl muss von einer Java-Anwendung ausgeführt werden (siehe meine andere Frage ).
Runtime.getRuntime().exec("my command");
Antworten:
Die Dokumentation dazu finden Sie auf MSDN . Der Schlüsselextrakt lautet:
Beachten Sie, dass Ihre Anwendung erhöhte Administratorrechte benötigt, um diesen Schlüssel ändern zu können.
In den Kommentaren geben Sie an, dass Sie gerne nur die Umgebung pro Benutzer ändern würden. Bearbeiten Sie dazu die Werte in HKEY_CURRENT_USER \ Environment . Stellen Sie nach wie vor sicher, dass Sie eine
WM_SETTINGCHANGE
Nachricht senden .Sie sollten dies mit Ihrer Java-Anwendung mithilfe der JNI-Registrierungsklassen problemlos tun können.
quelle
HKEY_CURRENT_USER\Environment
, um Höhenanforderungen zu vermeiden.requestedExecutionLevel
aufrequireAdministrator
dem App - Manifest.Sie können verwenden:
Die
setx
gespeicherte Zeichenfolge wird jedoch auf 1024 Byte abgeschnitten, wodurch möglicherweise der PATH beschädigt wird./M
wird dasPATH
inHKEY_LOCAL_MACHINE
anstelle von ändernHKEY_CURRENT_USER
. Mit anderen Worten, eine Systemvariable anstelle der des Benutzers. Beispielsweise:Sie müssen bedenken, dass der neue PFAD in Ihrem aktuellen nicht sichtbar ist
cmd.exe
.Aber wenn Sie in der Registrierung oder auf einem neuen
cmd.exe
mit suchen"set p"
, können Sie den neuen Wert sehen.quelle
setx
den Pfad des Computers anstelle des Benutzerpfads zu ändern?/m
am Ende des Befehls, auf Windows XP und 7 ich es allerdings nicht versucht habe.setx
Befehls "Standardoption ist nicht länger als '2' zulässig" erhalten. Wie kann ich ihn umgehen?Ich warne davor, den Befehl zu verwenden
Ändern der PATH-Variablen aufgrund eines "Features" ihrer Implementierung. Bei vielen (den meisten?) Installationen ist die Variable heutzutage langwierig -
setx
schneidet die gespeicherte Zeichenfolge auf 1024 Byte ab und beschädigt möglicherweise den PATH (siehe Diskussion hier ).( Ich habe mich speziell angemeldet, um dieses Problem zu kennzeichnen, und daher fehlt mir der Ruf der Website, die am 2. Mai 12 veröffentlichte Antwort direkt zu kommentieren. Ich danke beresfordt für das Hinzufügen eines solchen Kommentars. )
quelle
Dieses Python-Skript [*] macht genau das:
Im Folgenden finden Sie einige Verwendungsbeispiele, vorausgesetzt, sie wurden in einer Datei gespeichert, die
setenv.py
irgendwo in Ihrem aktuellen Pfad aufgerufen wird. Beachten Sie, dass ich in diesen Beispielen keine Administratorrechte hatte , sodass die Änderungen nur den Registrierungsbaum meines lokalen Benutzers betrafen:[*] Angepasst von: http://code.activestate.com/recipes/416087-persistent-environment-variables-on-windows/
quelle
Als Referenz zitiere ich für alle, die suchen, wie der Pfad über Code geändert werden kann, einen nützlichen Beitrag eines Delphi-Programmierers von dieser Webseite: http://www.tek-tips.com/viewthread.cfm?qid=686382
quelle
In einem Unternehmensnetzwerk, in dem der Benutzer nur eingeschränkten Zugriff hat und tragbare Apps verwendet, gibt es folgende Befehlszeilentricks:
reg query "HKEY_CURRENT_USER\Environment"
. Verwendung"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
für LOCAL_MACHINE.reg add "HKEY_CURRENT_USER\Environment" /v shared_dir /d "c:\shared" /t REG_SZ
. Verwenden Sie dieseREG_EXPAND_SZ
Option für Pfade, die andere %% -Variablen enthalten.reg delete "HKEY_CURRENT_USER\Environment" /v shared_dir
.quelle
Dieses Skript http://www.autohotkey.com/board/topic/63210-modify-system-path-gui/
Enthält alle erforderlichen Windows-API-Aufrufe, die für Ihre Anforderungen überarbeitet werden können. Es ist eigentlich eine AutoHotkey-GUI, um den Systempfad einfach zu ändern. Muss als Administrator ausgeführt werden.
quelle