¿Hay alguna manera de establecer la variable de entorno de la ruta global de Windows mediante programación (C++)?
Por lo que puedo ver, putenv lo configura solo para la aplicación actual.
Cambiar directamente en el registro (HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment)
también es una opción, aunque preferiría los métodos API si los hay?¿Hay alguna manera de establecer la ruta del entorno mediante programación en C++ en Windows?
Respuesta
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.
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.
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.
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.
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\
- 1. establecer variables de entorno mediante programación
- 2. ¿Hay alguna manera de probar mediante programación la aceleración de la GPU del navegador?
- 3. ¿Por qué la RUTA del entorno Powershell es diferente a la RUTA del entorno del sistema?
- 4. ¿Hay alguna manera de cerrar mi aplicación mediante programación? (Windows Phone 7)
- 5. ¿Variables de entorno modificadas mediante programación?
- 6. mediante programación en C#
- 7. ¿hay alguna manera de obtener la velocidad de actualización de la pantalla mediante programación?
- 8. ¿Hay alguna variable de entorno que represente la carpeta "C: \ Documents and Settings" o la carpeta C: \ Users en Windows?
- 9. establecer mediante programación la ruta de búsqueda de DLL en VBA macro
- 10. C# establecer la variable de entorno
- 11. ¿Hay alguna manera de verificar si una construcción está en Adhoc, lanzamiento, distribución mediante programación?
- 12. ¿Cómo establecer una variable de entorno mediante programación en Jenkins/Hudson?
- 13. Java establecer puntos de interrupción mediante programación
- 14. ¿Hay alguna manera de procesar SVG en Windows Forms?
- 15. ¿Cómo instalar un servicio de Windows mediante programación en C#?
- 16. MapActivity: establecer APIKey mediante programación
- 17. Confirme la impresión exitosa mediante programación en Windows
- 18. ¿Hay alguna manera de inicializar un objeto mediante un hash?
- 19. ¿Hay alguna manera de establecer programáticamente el ApartmentState en STA?
- 20. Establecer variables de entorno en C
- 21. Cómo responder mediante programación a Snap en Windows 8 Metro
- 22. ¿Hay alguna manera de listar repositorios git en la terminal?
- 23. establecer mediante programación Android: layout_centerHorizontal
- 24. ¿Cómo puedo acceder mediante programación a la ruta de destino de un enlace simbólico de Windows?
- 25. establecer mediante programación el valor del campo de listitem SharePoint
- 26. ¿Hay alguna manera confiable de activar/establecer el foco en una ventana usando C#?
- 27. ¿Hay alguna forma de minimizar mediante programación una ventana?
- 28. Android - establecer fondo de diseño mediante programación
- 29. ¿Hay alguna manera de restablecer las tablas de clasificación mediante programación?
- 30. ¿Hay alguna manera de establecer la prioridad del subproceso en segundo plano utilizado por un SwingWorker?
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