REG ADD KeyName [/v ValueName | /ve] [/t Type] [/s Separator] [/d Data] [/f]
KeyName [\\Machine\]FullKey
远程机器的机器名 - 忽略默认到当前机器。
远程机器上只有 HKLM 和 HKU。
FullKey ROOTKEY\SubKey
ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ]
SubKey 所选 ROOTKEY 下注册表项的完整名
/v 所选项之下要添加的值名
/ve 为注册表项添加空白值名<无名称>
/t RegKey 数据类型
[ REG_SZ | REG_MULTI_SZ | REG_DWORD_BIG_ENDIAN |
REG_DWORD | REG_BINARY | REG_DWORD_LITTLE_ENDIAN |
REG_NONE | REG_EXPAND_SZ ]
如果忽略,则采用 REG_SZ
/s 指定一个在 REG_MULTI_SZ 数据字符串中
用作分隔符的字符
如果忽略,则将 "\0" 用作分隔符
/d 要分配给添加的注册表 ValueName 的数据
/f 不用提示就强行改写现有注册表项
例如:
REG ADD
添加远程机器 ABC 上的一个注册表项 HKLM\Software\MyCo
REG ADD HKLM\Software\MyCo /v Data /t REG_BINARY /d fe340ead
添加一个值(名称: Data,类型: REG_BINARY,数据: fe340ead)
REG ADD HKLM\Software\MyCo /v MRU /t REG_MULTI_SZ /d fax\0mail
添加一个值(名称: MRU,类型: REG_MUTLI_SZ,数据: fax\0mail\0\0)
REG ADD HKLM\Software\MyCo /v Path /t REG_EXPAND_SZ /d %%systemroot%%
添加一个值(名称: Path,类型: REG_EXPAND_SZ,数据: %systemroot%)
注意: 在扩充字符串中使用双百分比符号( %% )
添加系统环境变量visual 值为vim, 不过加了之后在命令行用set 还是看不到,需要注销一下或者重启动explorer进程。
reg add "hklm\system\currentcontrolset\control\session manager\environment" /v visual /t REG_SZ /d vim
导出环境变量到env.reg
reg export "hklm\system\currentcontrolset\control\session manager\environment" env.reg
显示注册表系统环境变量:
reg query "hklm\system\currentcontrolset\control\session manager\environment"
使用VBS
Set wsh = WScript.CreateObject("WScript.Shell")
wsh.Environment("system").Item("<变量名>")="<值>"
::系统环境变量
::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
::用户环境变量
::HKEY_CURRENT_USER\Environment
reg add "%regpath%" /v "<name>" /d "<data>"
来源:
大部分情况下我们都是通过Windows自带的环境变量编辑器来修改系统环境变量,也可以通过Windows系统提供的path,set两个命令临时修改。
使用系统编辑器修改环境变量最终会反映到注册表中保存,我们知道环境变量分为两种,用户变量,以及系统变量,其存储的位置分别位于:
系统变量:
[HKLM\SYSTEM\ControlSet001\Control\Session Manager\Environment]
[HKLM\SYSTEM\ControlSet002\Control\Session Manager\Environment]
[HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
用户变量:
[HKCU\Environment]
其中HKLM = HKEY_LOCAL_MACHINE,HKCU = HKEY_CURRENT_USER
ControlSet001/ControlSet002/CurrentControlSet保存用于系统启动的重要配置信息,其中CurrentControlSet指向ControlSet001,两者互相同步,每次针对两者中任意一个分支的修改都会立即复制到另外一个分支相对应的键值中。
当系统启动时,会使用其中一个分支的信息以尝试启动系统,这个就是ControlSet001,如果启动成功,那么ControlSet001的信息会复制到ControlSet002中。如果启动失败,那么就不会发生这个复制过程。
当系统因某些原因无法启动时,我们通常会使用“Using the Last Known Good Configuration”来尝试启动系统,也就是“最后一次正确的配置”(启动时按住F8),这时系统使用的就是ControlSet002分支的配置信息。