2009-02-10 11 views

Respuesta

23

MSDN Says:

Calling SetEnvironmentVariable no tiene efecto en el entorno del sistema variables. Para agregar mediante programación o modificar las variables de entorno del sistema, ellos añaden a la clave HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Control \ Session clave de registro Manager \ Environment, entonces difundir un mensaje WM_SETTINGCHANGE con IParam establece en la cadena "medio ambiente" . Esto permite aplicaciones, como el shell, a recoger sus actualizaciones. Tenga en cuenta que los valores de de las variables de entorno enumerados en esta clave están limitados a 1024 caracteres.

+1

Cabe señalar que la cadena "Entorno" está en formato UTF16, por lo que debe usar el prefijo 'L'. Código de muestra: 'SendMessageTimeout (HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM) L" Entorno ", SMTO_ABORTIFHUNG, 5000, NULL);' – izogfif

3

No hay API, cambiar el registro es la manera de hacerlo. El valor modificado se usará para procesos que comiencen después de que se realizó el cambio.

Además, tenga en cuenta que las aplicaciones en ejecución deben procesar activamente el mensaje de configuración modificada y muchas (¿la mayoría?) No lo hacen.

2

Si desea hacerlo a través del registro, es posible que desee consultar el código fuente del programa this.

Microsoft también proporciona una pequeña utilidad de línea de comandos llamada setx con su resource toolkits, que le permitirá hacer esto. Por cierto, el comando set regular simplemente te permite definir variables de entorno locales, creo.

2

Sí Usted está en lo correcto. También es necesario efectuar estos ajustes sin cerrar la sesión

Enviar mensaje de borad fundición a todos SETTINGCHANGE ventanas para el parámetro (lParam) "Medio Ambiente" con SMTO_ABORTIFHUNG para algunos milisegundos (5000) utilizando la API SendMessageTimeout.

Esto es lo que setX.exe proporciona con el recurso Kit.

9

Como se señaló anteriormente, para cambiar la ruta a nivel máquina acaba de cambiar esta entrada del registro:

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

Pero también se puede establecer la ruta a nivel usuario cambiando este registro entrada:

HKEY_CURRENT_USER\Environment\Path 

Y también se puede establecer la ruta a nivel de aplicación mediante la adición de la aplicación \ deta Path ils a esta entrada de registro:

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