2009-02-10 6 views

Antwort

23

MSDN Says:

SetEnvironmentVariable Aufruf hat keine Auswirkungen auf die Systemumgebung Variablen. Um programmatisch hinzufügen oder Systemumgebungsvariablen ändern, sie das HKEY_LOCAL_MACHINE \ System hinzufügen \ CurrentControlSet \ Control \ Session Manager \ Environment Registrierungsschlüssel, dann Broadcast eine WM_SETTINGCHANGE Nachricht mit lParam auf den String gesetzt "Umwelt" . Dies ermöglicht Anwendungen, wie die Shell, nehmen Sie Ihre Updates. Beachten Sie, dass die Werte der Umgebungsvariablen , die in diesem Schlüssel aufgeführt sind, auf 1024 Zeichen beschränkt sind.

+1

Es sollte beachtet werden, dass "Environment" Zeichenfolge in UTF16-Form ist, so sollten Sie 'L' Präfix verwenden. Beispielcode: 'SendMessageTimeout (HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM) L" Umgebung ", SMTO_ABORTIFHUNG, 5000, NULL);' – izogfif

3

Es gibt keine API - das Ändern der Registrierung ist der Weg, dies zu tun. Der geänderte Wert wird für Prozesse verwendet, die nach der Änderung beginnen.

Auch: Beachten Sie, dass laufende Anwendungen aktiv die Einstellungen geändert Nachricht verarbeiten müssen und viele (die meisten?) Tun dies nicht.

2

Wenn Sie es über die Registrierung tun möchten, möchten Sie vielleicht den Quellcode von this Programm anzeigen.

Microsoft bietet auch ein kleines Befehlszeilenprogramm namens setx mit seiner resource toolkits, mit dem Sie dies tun können. Übrigens können Sie mit dem regulären Befehl nur lokale Umgebungsvariablen definieren.

2

Ja Sie haben Recht. Sie müssen auch diese Einstellungen bewirken, ohne

Nachricht von borad an alle Fenster SETTINGCHANGE für einige Millisekunden für den Parameter (LPARAM) „Umwelt“ mit SMTO_ABORTIFHUNG Abwerfen Logging (5000) Sendmessagetimeout-API.

Dies ist, was SetX.exe mit Resource Kit zur Verfügung stellt.

9

Wie bereits erwähnt, die PATH an der Maschine Ebene zu ändern, nur diesen Registrierungseintrag ändern:

HLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment 

Sie können aber auch den Weg auf der Benutzerebene durch Änderung dieser Registrierung festgelegt Eintritt:

HKEY_CURRENT_USER\Environment\Path 

Und Sie können auch den Pfad an der Anwendungsebene durch Hinzufügen der Anwendung \ Path deta gesetzt its zu diesem Registrierungseintrag:

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\ 
Verwandte Themen