I am trying to set a Windows user environment variable and then launch an application via either batch file or a script. However, the environment variable is not set to the appropriate value until after the user logs off and logs back on. (I think a more accurate description would be that the new value is not available to the app until after the next logon.)
Is there any way to set a variable in the user's environment so that it's immediately available?
I'm doing this because this program's functionality can be controlled by environment variables, and users will need different functionality at different times. Because of license constraints I need to set this dynamically, if possible.
Thanks,
Graham
The simplest way to to not set the environment variable at all and run the application from a batch file that sets the environment variable for that session. Only if the variable exists should it not take effect until the next logon
Where are you actually setting the variable? If you are setting it in the system properties, it will only affect new shell sessions and not existing ones... but a logoff/logon shouldn't be required, really.
Your best option would be to set your variable in te same batch file that launches the application.
If you're user is administrator to the machine, then you can merge the value you need in to registry. Then run the batch file.
This will add the environment variable MYENVIRON with the value MYVALUE
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v MYENVIRON /t REG_SZ /d MYVALUE /f