我正在尝试为用户 xy 设置环境变量。如何在 Visual Basic 脚本中执行此操作?
这就是我所拥有的:
Dim objShell As Object
Set objShell = CreateObject("WScript.Shell")
objShell.Environment("user")("TEST") = "12345"
通过这种方式,我可以为登录用户设置环境变量。但是如何为其他用户 xy 设置环境变量?
马库斯
我正在尝试为用户 xy 设置环境变量。如何在 Visual Basic 脚本中执行此操作?
这就是我所拥有的:
Dim objShell As Object
Set objShell = CreateObject("WScript.Shell")
objShell.Environment("user")("TEST") = "12345"
通过这种方式,我可以为登录用户设置环境变量。但是如何为其他用户 xy 设置环境变量?
马库斯
如果您想为其他用户更改环境变量,您必须在他们的上下文中运行您的代码(使用runas
)或更改注册表中的变量。对于后者,您必须从用户配置文件中加载用户配置单元ntuser.dat
:
Set sh = CreateObject("WScript.Shell")
sh.Run "%COMSPEC% /c reg load HKU\Temp C:\Users\foo\ntuser.dat", 0, True
加载配置单元后,您可以操作环境子项:
sh.RegWrite "HKEY_USERS\Temp\Environment\TEST", "12345", "REG_SZ"
完成后卸载蜂巢并完成:
sh.Run "%COMSPEC% /c reg unload HKU\Temp", 0, True
只有系统环境对其他用户可用。
Set wshShell = CreateObject( "WScript.Shell" )
Set wshSystemEnv = wshShell.Environment( "SYSTEM" )
WScript.Echo "SYSTEM: TEMP=" & wshSystemEnv( "TEMP" )