2009-02-10 17 views

risposta

23

MSDN Says:

Calling SetEnvironmentVariable non ha effetto sull'ambiente del sistema variabili. Per aggiungere a livello di codice o modificare le variabili di ambiente del sistema, aggiungerli al HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Control \ Session chiave di registro Manager \ Environment, quindi trasmettere un messaggio WM_SETTINGCHANGE con lParam impostato la stringa "Ambiente" . Ciò consente alle applicazioni , ad esempio la shell, di prelevare gli aggiornamenti su . Si noti che i valori delle variabili di ambiente elencati in questa chiave sono limitati a 1024 caratteri.

+1

Si noti che la stringa "Ambiente" è in formato UTF16, quindi è necessario utilizzare il prefisso 'L'. Esempio di codice: 'SendMessageTimeout (HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM) L" Ambiente ", SMTO_ABORTIFHUNG, 5000, NULL);' – izogfif

3

Non c'è API - cambiare il registro è il modo per farlo. Il valore modificato verrà utilizzato per i processi che iniziano dopo la modifica.

Inoltre: si noti che le applicazioni in esecuzione devono elaborare attivamente il messaggio modificato delle impostazioni e molti (la maggior parte?) Non lo fanno.

2

Se si desidera eseguire questa operazione tramite il registro, è possibile che si desideri controllare il codice sorgente del programma this.

Microsoft fornisce anche una piccola utility da riga di comando denominata setx con il suo resource toolkits, che consente di eseguire questa operazione. A proposito, il comando set regolare ti consente di definire variabili di ambiente locali.

2

Sì Avete ragione. È inoltre necessario effettuare queste impostazioni senza disconnettersi

Invia Messaggio del borad colata a tutte le finestre SETTINGCHANGE per il parametro (LPARAM) "Ambiente" con SMTO_ABORTIFHUNG per alcuni millesimi di secondo (5000) utilizzando SendMessageTimeout API.

Questo è ciò che setX.exe fornito con il kit di risorse.

9

Come ricordato in precedenza, per modificare il percorso a livello macchina basta cambiare questa voce del Registro:

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

ma è anche possibile impostare il PATH a livello utente modificando questo Registro di sistema ingresso:

HKEY_CURRENT_USER\Environment\Path 

E si può anche impostare il PATH a livello di applicazione aggiungendo l'applicazione \ Path deta a questa voce di registro:

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