的VBScript:Windows系统环境变量,变化没有得到体现在CMD提示
问题描述:
我写了一个VB脚本(.VBS)添加Windows系统环境变量,如下图所示,的VBScript:Windows系统环境变量,变化没有得到体现在CMD提示
set WshShell = CreateObject("WScript.Shell")
WshShell.RegWrite "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\CATALINA_HOME", "C:\Tomcat5" , "REG_EXPAND_SZ"
当我看到这个环境变量系统属性 - >高级 - >环境变量对话框,它显示那里的环境变量。
但是,当我运行命令提示符并在那里键入“设置”命令时,我没有在那里找到该变量。 (在VBS执行后我开始了新的CMD提示)
一些如何CMD提示没有得到环境变量的变化。
如果我重新启动机器,那么我可以从CMD提示符访问环境变量。但是,我不希望用户在执行我的vbs并在cmd提示符下工作后重新启动系统。
任何想法?
答
那是因为你是在注册表中的“插入”永久价值,树立了“活”的值,用流动的代码,对于prouposes使用两个代码
SET oShell = CREATEOBJECT("Wscript.Shell")
SET wSystemEnv = oShell.Environment("SYSTEM")
wSystemEnv("<Name>") = "<Value>"
SET wSystemEnv = NOTHING
SET oShell = NOTHING
答
感谢路易斯!
实际上,使用注册表添加/修改环境变量有点粗糙。这样做可能会造成一些不一致。
因此,理想的做法是通过使用专用于环境变量WshEnvironment的集合。
现在,路易斯的建议,我写了下面的脚本添加系统环境变量,
Set wshshell = CreateObject("WScript.Shell")
Dim WshSySEnv
Set WshSysEnv = wshshell.Environment("SYSTEM")
WshSysEnv("1VINOD") = "1Vinod"
WshSysEnv("2VINOD") = "2Vinod"
Set WshSySEnv = Nothing
保存此代码在VBS文件,执行该VBS文件。现在,您将在cmd提示符中获得2个环境变量,而无需重新启动系统。
去除变量类似的脚本,
Set wshshell = CreateObject("WScript.Shell")
Dim WshSySEnv
Set WshSysEnv = wshshell.Environment("SYSTEM")
WshSysEnv.Remove("1VINOD")
WshSysEnv.Remove("2VINOD")
Set WshSySEnv = Nothing
这也并不需要任何重新启动/登录,注销。
享受!
我已经在XP上测试过了,希望这也适用于Windows 7。
我没有测试,但我确定在上面的代码中注销/登录就足够了。 – 2011-05-05 16:53:52
即使不需要登录/注销,在执行VB脚本之后,您只需打开“系统属性 - >高级 - >环境变量对话框”,然后按OK按钮即可。下次打开cmd promt,你会看到在VBS中设置的env变量。但是,我不希望用户玩这样的技巧... – 2011-05-06 06:18:50