我正在制作一个100%的安装程序,具体取决于系统变量,例如%TEMP%或%Path%,用户首先双击windows.bat
文件。
但是,如何使用VBS或BATCH在Windows XP,Vista,7,8中设置永久系统变量?
我尝试使用BATCH,但在Windows XP中,大多数用户默认没有setx
,所以我想避免使用该技术。有没有更好的方法呢?
C:\Documents and Settings\sun>REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Ses
sion Manager\Environment" /v MyApplicationWillUsetThis /d "C:\WhatEverPathToIncl
udeHereQuestionMark"
The operation completed successfully
C:\Documents and Settings\sun>REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Ses
sion Manager\Environment" /v MyApplicationWillUsetThis /d "C:\WhatEverPathToIncl
udeHereQuestionMark"
Value MyApplicationWillUsetThis exists, overwrite(Y/N)? Y
The operation completed successfully
答案 0 :(得分:4)
您可以在注册表中的HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment下创建REG_SZ值。值的名称指定环境变量的名称,该值指定环境变量的值。
您还可以修改现有值。
为了修改注册表,您可以使用WScript.Shell对象的RegRead和RegWrite方法。有关示例,请查看Manipulating the System Registry。
修改:您可以先删除现有值,然后重新创建。
REG DELETE "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v MyApplicationWillUsetThis /f
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v MyApplicationWillUsetThis /d "C:\WhatEverPathToIncludeHereQuestionMark"
答案 1 :(得分:3)
如何从VBScript
设置环境变量Set WshShell = CreateObject("Wscript.Shell")
' set a permanent environment variable %MyVarName% for all users
WshShell.Environment.item("MyVarName") = "MyVarValue"
如果上述设置不是永久性的,请尝试此设置。这将为所有用户设置永久环境变量。您可以使用Environment集合尝试系统,用户,易失性和流程类别。
With WSHShell.Environment("SYSTEM")
.item("MyVarName") = "MyVarValue"
End With
您还可以使用ExpandEnvironmentStrings读取环境变量,或用长命令行类型字符串中的值替换它们。
sValue = WshShell.ExpandEnvironmentStrings("%MyVarName%")
要使用注册表,请尝试
sRegKey = "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\MyVarName"
sValue = WshShell.RegRead(sRegKey)
' don't write if no change is required.
If sValue <> sNewValue Then WshShell.RegWrite sRegKey , sNewValue