XP下通过 命令行/批处理 修改环境变量

来源:互联网 发布:安卓软件开发 编辑:程序博客网 时间:2024/05/17 22:08

NO1.转自http://www.slyar.com/blog/xp-java-reg-env.html

XP系统的环境变量都是保存在注册表里的,所以如果想要通过命令行或者是批处理来修改环境变量,就需要知道它保存在注册表的哪个地方。

PS.CMD命令可以通过set直接修改环境变量,但那只是一次性的,系统重启后就无效了,这也是为什么要直接修改注册表的原因。

系统环境变量空间的注册表项保存位置为:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

当前用户环境变量空间的注册表项保存位置为:

HKEY_CURRENT_USER\Environment

有了这个东西,我们就可以利用CMD的reg命令来修改注册表了,关于reg命令,你可以自己去Google一下,用法很多。

你可以把修改环境变量的CMD语句写进批处理,当然你也可以使用C语言的system("命令");语句把它写成一个小程序。

这里我写三条语句来修改JDK的环境变量

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Java_Home /t reg_sz /d "%cd%" /f

这条语句是增加Java_Home环境变量,变量的值是这个批处理所在的路径。所以,将这三条语句写成批处理后,只要把批处理文件放置到JDK的安装目录下,即可一次性配置好环境变量。

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v ClassPath /t reg_expand_sz /d ".;%Java_Home%\lib\dt.jar;%Java_Home%\lib\tools.jar;%Java_Home%\lib\htmlconverter.jar" /f

这条语句是增加ClassPath环境变量

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v path /t reg_expand_sz /d ".;%path%;%Java_Home%\bin" /f

这条语句是修改Path环境变量,要使用%path%来读取之前的Path变量,否则会清空原来的Path变量

有了核心内容,其他的修饰就很随意了,交给你来办啦,嘿嘿。

恩,结合这篇文章看吧《常用系统环境变量的含义》

2009.10.02 重要修改:

最近在使用批处理的时候总是不能一次成功,刚才仔细研究了一下才发现一系列很重要的问题!

1、批处理会自动转换%variable%变量

2、使用reg命令修改注册表时,如果%variable%存在有效值,则自动替换%variable%;如果%variable%不存在,那么保持原样输出

实验了很多次才发现这两条关键性问题,懂不懂无所谓了,我懂了就行。如果想要成功使用批处理修改,必须修改2条。第一是批处理中的%必须使用转义字符%%维持变量符号,第二是必须最后倒入Java_Home,这样前面调用%Java_Home%的时候才不会自动转换变量。总之,最后有效的批处理是这样的:

@reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v ClassPath /t reg_expand_sz /d ".;%%Java_Home%%\lib\dt.jar;%%Java_Home%%\lib\tools.jar;%%Java_Home%%\lib\htmlconverter.jar" /f

@reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v path /t reg_expand_sz /d ".;%path%;%%Java_Home%%\bin" /f

@reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Java_Home /t reg_sz /d "%cd%" /f




NO2,Reg命令


Reg概述:
对注册表子项信息和注册表项值中的值执行添加、更改、导入、导出以及其他操作。


Reg 命令包括:
Reg Add / Reg Compare / Reg Copy / Reg Delete / Reg Export / Reg Import / Reg Load / Reg Query / Reg Restore / Reg Save / Reg Unload

Reg Add
将新的子项或项添加到注册表中。

语法:
Reg Add KeyName [{/v ValueName | /ve}] [/t DataType] [/s Separator] [/d Data] [/f]

参数:
KeyName 指定要添加的子项或项的完整路径。要指定远程计算机,请包括计算机名(以 \\ComputerName\ 格式表示),并将其作为 KeyName 的一部分。省略 \\ComputerName\ 会导致默认对本地计算机的操作。KeyName 必须包括一个有效的根键。有效根键包括 HKLM、HKCU、HKCR、HKU 以及HKCC。如果指定了远程计算机,则有效根键是 HKLM 和 HKU。

/v ValueName
指定要添加到指定子项下的注册表项名称。

/ve
指定添加到注册表中的注册表项为空值。

/t Type
指定注册表项的类型。Type 必须是以下几种类型之一:
Reg_SZ
Reg_MULTI_SZ
Reg_DWORD_BIG_ENDIAN
Reg_DWORD
Reg_BINARY
Reg_DWORD_LITTLE_ENDIAN
Reg_LINK
Reg_FULL_RESOURCE_DESCRIPTOR
Reg_EXPAND_SZ

/s Separator
当指定了 Reg_MULTI_SZ 数据类型并且需要列出多个项时,指定用来分隔数据的多个实例的字符。如果没有指定,将使用默认分隔符“\0”。 

/d Data
指定新注册表项的数据。

/f
添加注册表项而不要求确认。

/?
在命令提示符处显示 Reg Add 的帮助。

注释:
• 该操作不能添加子树。该版本的 Reg 在添加子项时无需请求确认。
• 下表列出了 Reg Add 操作的返回值。
值 描述
0   成功
1   失败
• 对于 Reg_EXPAND_SZ 项类型,在 /d 参数内将插入符号 ( ^ ) 与“%”一起使用。

示例:
要在远程计算机 ABC 上添加 HKLM\Software\MyCo 项,请键入:
Reg ADD \\ABC\HKLM\Software\MyCo

要将一个注册表项添加到 HKLM\Software\MyCo,选项为值名:Data;类型:Reg_BINARY;数值数据:fe340ead;请键入:
Reg ADD HKLM\Software\MyCo /v Data /t Reg_BINARY /d fe340ead

要将一个多值注册表项添加到 HKLM\Software\MyCo,选项为值名:MRU;数据类型:Reg_MULTI_SZ;数值数据:fax\0mail\0\0;请键入:
Reg ADD HKLM\Software\MyCo /v MRU /t Reg_MULTI_SZ /d fax\0mail\0\0

要将一个扩展的注册表项添加到 HKLM\Software\MyCo,选项为值名:Path;数据类型:Reg_EXPAND_SZ;数值数据:%systemroot%;请键入:
Reg ADD HKLM\Software\MyCo /v Path /t Reg_EXPAND_SZ /d ^%systemroot^%

Reg Compare
比较指定的注册表子项或项。

语法:
Reg Compare KeyName1 KeyName2 [{/v ValueName | /ve}] [{/oa | /od | /os | on}] [/s]

参数:
KeyName1
指定要比较的第一个子项的完整路径。要指定远程计算机,请包括计算机名(以\\ComputerName\ 格式表示),并将其作为 KeyName 的一部分。省略 \\ComputerName\ 会导致默认对本地计算机的操作。KeyName 必须包括一个有效的根键。有效根键包括 HKLM、HKCU、HKCR、HKU 以及 HKCC。如果指定了远程计算机,则有效根键是 HKLM 和 HKU。

KeyName2
指定要比较的第二个子项的完整路径。要指定远程计算机,请包括计算机名(以 \\ComputerName\ 格式表示),并将其作为 KeyName 的一部分。省略 \\ComputerName\ 会导致默认对本地计算机的操作。只在 KeyName2 中指定计算机名会导致该操作使用到 KeyName1 中指定的子项的路径。KeyName 必须包括一个有效的根键。有效根键包括 HKLM、HKCU、HKCR、HKU 以及 HKCC。如果指定了远程计算机,则有效根键是HKLM和HKU。

/v ValueName
指定要比较的子项下的值名称。

/ve
指定只比较值名称为 null 的项。

[{/oa | /od | /os | on}]
指定如何显示比较操作的结果。默认设置是 /od。下表列出了每一个选项。

值     描述
/oa   指定显示所有不同点和匹配点。默认情况下,仅列出不同点。
/od   指定仅显示不同点。这是默认操作。
/os   指定仅显示匹配点。默认情况下,仅列出不同点。
/on   指定不显示任何内容。默认情况下,仅列出不同点。

/s
递归地比较所有子项和项。

/?
在命令提示符处显示 Reg Compare 的帮助。

注释:
• 下表列出了 Reg Compare 操作的返回值。
值  描述
0    比较成功且结果相同。
1    比较失败。
2    比较成功并找到不同点。

• 下表列出了结果中显示的符号。
符号 描述
=       KeyName1 数据等于 KeyName2 数据
<       KeyName1 数据小于 KeyName2 数据
>       KeyName1 数据大于 KeyName2 数据

示例:
要将 MyApp 项下的所有值与 SaveMyApp 项下的所有值进行比较,请键入:
Reg COMPARE HKLM\Software\MyCo\MyApp HKLM\Software\MyCo\SaveMyApp

要比较 MyCo 项下的 Version 的值和 MyCo1 项下的 Version 的值,请键入:
Reg COMPARE HKLM\Software\MyCo HKLM\Software\MyCo1 /v Version

要将计算机 ZODIAC 上 HKLM\Software\MyCo 下的所有子项和值与当前计算机上 HKLM\Software\MyCo 下的所有子项和值进行比较,请键入: 
Reg COMPARE \\ZODIAC\HKLM\Software\MyCo \\. /s

Reg Copy
将一个注册表项复制到本地或远程计算机的指定位置。 

语法:
Reg Copy KeyName1 KeyName2 [/s] [/f] 

参数:
KeyName1 
指定要复制子项的完整路径。要指定远程计算机,请包括计算机名(以 \\ComputerName\ 格式表示),并将其作为 KeyName 的一部分。省略\\ComputerName\ 会导致默认对本地计算机的操作。KeyName 必须包括一个有效的根键。有效根键包括 HKLM、HKCU、HKCR、HKU 以及 HKCC。如果指定了远程计算机,则有效根键是 HKLM 和 HKU。 

KeyName2 

指定子项目的地的完整路径。要指定远程计算机,请包括计算机名(以 \\ComputerName\ 格式表示),并将其作为 KeyName 的一部分。省略 \\ComputerName\会导致默认对本地计算机的操作。KeyName 必须包括一个有效的根键。有效根键包括 HKLM、HKCU、HKCR、HKU 以及 HKCC。如果指定了远程计算机,则有效根键是 HKLM 和 HKU。 

/s
复制指定子项下的所有子项和项。 

/f 
不要求确认而直接复制子项。 

/?
在命令提示符处显示 Reg Copy 的帮助。 

注释  :
• 在复制子项时 Reg 不请求确认。 
• 下表列出了 Reg Copy 操作的返回值。
值 描述
0   成功 
1   失败 

示例:

要将 MyApp 项下的所有子项和值复制到 SaveMyApp 项,请键入:
Reg COPY HKLM\Software\MyCo\MyApp HKLM\Software\MyCo\SaveMyApp /s 

要将计算机 ZODIAC 上的 MyCo 项下的所有值复制到当前计算机上的 MyCo1 项,请键入:
Reg COPY \\ZODIAC\HKLM\Software\MyCo HKLM\Software\MyCo1 

Reg Delete
从注册表删除子项或项。

语法:
Reg Delete KeyName [{/v ValueName | /ve | /va}] [/f]

参数:

KeyName
指定要删除的子项或项的完整路径。要指定远程计算机,请包括计算机名(以 \\ComputerName\ 格式表示),并将其作为 KeyName 的一部分。省略 \\ComputerName\ 会导致默认对本地计算机的操作。KeyName 必须包括一个有效的根键。有效根键包括 HKLM、HKCU、HKCR、HKU 以及 HKCC。如果指定了远程计算机,则有效根键是 HKLM 和 HKU。

/v ValueName
删除子项下的特定项。如果未指定项,则将删除子项下的所有项和子项。

/ve
指定只可以删除为空值的项。

/va
删除指定子项下的所有项。使用本参数不能删除指定子项下的子项。

/f
无需请求确认而删除现有的注册表子项或项。

/?
在命令提示符处显示 Reg Delete 的帮助。

注释:
• 下表列出了 Reg Delete 操作的返回值。 
值 描述 
0    成功
1    失败

示例:

要删除注册表项 Timeout 以及其所有子项和值,请键入:
Reg DELETE HKLM\Software\MyCo\MyApp\Timeout 

要删除计算机 ZODIAC 上 HKLM\Software\MyCo 下的注册表值 MTU,请键入:
Reg DELETE \\ZODIAC\HKLM\Software\MyCo /v MTU

Reg Export 
将本地计算机的指定子项、项和值复制到一个文件中,以便传输到其他服务器。 

语法:
Reg export KeyName FileName [/y]

参数:
KeyName 
指定子项的完全路径。Export 操作仅可在本地计算机上工作。KeyName 必须包括一个有效的根键。有效根键包括 HKLM、HKCU、HKCR、HKU 以及 HKCC。 

FileName
指定在操作期间创建的文件的名称和路径。该文件必须具有 .Reg 扩展名。 

/y
不要求确认即覆盖任何现有的名称为 FileName 的文件。 

/?
在命令提示符处显示 Reg Export 的帮助。 

注释: 
• 下表列出了 Reg Export 操作的返回值。
值 描述
0   成功 
1   失败 

示例: 
要将 MyApp 项的所有子项和值的内容导出到文件 AppBkUp.Reg,请键入:
Reg Export HKLM\Software\MyCo\MyApp AppBkUp.Reg

Reg Import 
将包含已导出的注册表子项、项和值的文件的内容复制到本地计算机的注册表中。

语法:
Reg Import FileName 

参数:
FileName 
指定其内容将复制到本地计算机注册表中的文件的名称和路径。此文件必须使用 Reg export 预先创建。 

/? 
在命令提示符处显示 Reg Import 的帮助。 

注释: 
• 下表列出了 Reg Import 操作的返回值。
值 描述
0   成功
1   失败 

示例: 
要从名为 AppBkUp.Reg 的文件导入注册表项,请键入:
Reg Import AppBkUp.Reg

Reg Load 
将保存的子项和项写回到注册表的不同子项中。与用于进行疑难解答或编辑注册表项的临时文件一起使用。 

语法:
Reg load KeyName FileName 

参数:
KeyName
指定要加载的子项的完整路径。要指定远程计算机,请包括计算机名(以 \\ComputerName\ 格式表示),并将其作为 KeyName 的一部分。省略 \\ComputerName\ 会导致默认对本地计算机的操作。KeyName 必须包括一个有效的根键。有效根键包括 HKLM、HKCU、HKCR、HKU 以及 HKCC。如果指定了远程计算机,则有效根键是 HKLM 和 HKU。 

FileName
指定要加载的文件的名称和路径。必须使用 .hiv 作为扩展名的 Reg Save 操作预先创建该文件。 

/? 
在命令提示符处显示 Reg Load 的帮助。 

注释:
• 下表列出了 Reg Load 操作的返回值。
值 描述
0   成功 
1   失败 

示例:
要将名为 TempHive.hiv 的文件加载到 HKLM\TempHive 项,请键入:
Reg LOAD HKLM\TempHive TempHive.hiv

Reg Quer
返回位于注册表中指定的子项下的下一层子项和项的列表。

语法:
Reg query KeyName [{/v ValueName | /ve}] [/s] [/se Separator] [/f Data] [{/k | /d}] [/c] [/e] [/t Type] [/z]

参数:
KeyName
指定子项的完全路径。要指定远程计算机,请包括计算机名(以 \\ComputerName\ 格式表示),并将其作为 KeyName 的一部分。省略 \\ComputerName\会导致默认对本地计算机的操作。KeyName 必须包括一个有效的根键。有效根键包括 HKLM、HKCU、HKCR、HKU 以及 HKCC。如果指定了远程计算机,则有效根键是 HKLM 和 HKU。

/v ValueName
指定要查询的注册表值名称。如果省略,则返回 KeyName 的所有值名称。如果还使用了 /f 选项,则此参数的 ValueName 是可选的。 

/ve
查询空白的值名称。

/s
指定该参数递归查询所有子项和值名称。

/se Separator
指定单值分隔符,以搜索 Reg_MULTI_SZ 类型的值名称。如果没有指定 Separator,则使用“\0”。

/f Data
指定要搜索的数据或模式。如果字符串包含空格,则使用双引号。如果未指定,则使用通配符 ("*") 作为搜索模式。

/k
指定只在项名称中搜索。

/d
指定只在数据中搜索。

/c
指定查询是区分大小写的。默认情况下,查询是不区分大小写的。

/e
指定只返回完全匹配项。默认情况下,返回所有匹配项。

/t Type
指定要搜索的注册表类型。有效的类型包括:Reg_SZ、Reg_MULTI_SZ、Reg_EXPAND_SZ、Reg_DWORD、Reg_BINARY、Reg_NONE。如果未指定,则搜索所有类型。

/z
指定在搜索结果中包括注册表类型的数字同等物。

/?
在命令提示符处显示 Reg Query 的帮助。

注释:
• 下表列出了 Reg Query 操作的返回值。
值 描述 
0   成功 
1   失败 

示例:
要显示 HKLM\Software\Microsoft\ResKit 项中的名称值 Version 的值,请键入:
Reg QUERY HKLM\Software\Microsoft\ResKit /v Version

要显示远程计算机 ABC 上的 HKLM\Software\Microsoft\ResKit\Nt\Setup 项下的所有子项和值,请键入:
Reg QUERY \\ABC\HKLM\Software\Microsoft\ResKit\Nt\Setup /s

要使用“#”作为分隔符显示 Reg_MULTI_SZ 类型的所有子项和值,请键入:
Reg QUERY HKLM\Software\Microsoft\ResKit\Nt\Setup /se #

要显示数据类型 Reg_SZ 的 HKLM 根下的“SYSTEM”的完全匹配并且区分大小写的匹配项的项、值和数据,请键入:
Reg QUERY HKLM /f SYSTEM /t Reg_SZ /c /e

要显示数据类型 Reg_BINARY 的根键 HKCU 下的数据中的“0F”的匹配项的项、值和数据,请键入:
Reg QUERY HKCU /f 0F /d /t Reg_BINARY

要显示 HKLM\SOFTWARE 下的值名称 null(默认值)的值和数据,请键入:
Reg QUERY HKLM\SOFTWARE /ve

Reg Restore
将保存的子项和项写回到注册表。 

语法:
Reg restore KeyName FileName

参数:
KeyName
指定要还原的子项的完整路径。Restore 操作仅在本地计算机上工作。KeyName 必须包括一个有效的根键。有效根键包括 HKLM、HKCU、HKCR、HKU 以及 HKCC。

FileName
指定其内容将写回到注册表中的文件的名称和路径。必须使用 .hiv 作为扩展名的 Reg save 操作预先创建该文件。

/?
在命令提示符处显示 Reg Restore 的帮助。

注释:
• 编辑任何注册表项之前,请使用 Reg Save 操作保存父子项。如果编辑失败,则可以使用 Reg Restore 操作还原原来的子项。 
• 下表列出了 Reg Restore 操作的返回值。 
值 描述
0   成功 
1   失败

示例:
要将名为 NTRKBkUp.hiv 的文件还原到 HKLM\Software\Microsoft\ResKit 项,并覆盖该项的现有内容,请键入:
Reg RESTORE HKLM\Software\Microsoft\ResKit NTRKBkUp.hiv

Reg Save
将指定的子项、项和注册表值的副本保存到指定文件中。 

语法:
Reg save KeyName FileName [/y]

参数:
KeyName
指定子项的完全路径。要指定远程计算机,请包括计算机名(以 \\ComputerName\ 格式表示),并将其作为 KeyName 的一部分。省略\\ComputerName\会导致默认对本地计算机的操作。KeyName 必须包括一个有效的根键。有效根键包括 HKLM、HKCU、HKCR、HKU 以及 HKCC。如果指定了远程计算机,则有效根键是 HKLM 和 HKU。

FileName
指定所创建的文件的名称和路径。如果未指定路径,则使用当前路径。

/y
不要求确认即覆盖任何现有的名称为 FileName 的文件。

/?
在命令提示符处显示 Reg Save 的帮助。

注释:
• 下表列出了 Reg Save 操作的返回值。
值 描述 
0   成功 
1   失败
• 编辑任何注册表项之前,请使用 Reg Save 操作保存父子项。如果编辑失败,则可以使用 Reg Restore 操作还原原来的子项。 

示例:
要将配置单元 MyApp 作为名为 AppBkUp.hiv 的文件保存到当前文件夹中,请键入:
Reg SAVE HKLM\Software\MyCo\MyApp AppBkUp.hiv

Reg Unload
使用 Reg Load 操作删除已加载的部分注册表。

语法:
Reg Unload KeyName

参数:

KeyName
指定要卸载的子项的完整路径。要指定远程计算机,请包括计算机名(以 \\ComputerName\格式表示),并将其作为 KeyName 的一部分。省略 \\ComputerName\ 会导致默认对本地计算机的操作。KeyName 必须包括一个有效的根键。有效根键包括 HKLM、HKCU、HKCR、HKU 以及 HKCC。如果指定了远程计算机,则有效根键是 HKLM 和 HKU。

/?
在命令提示符处显示 Reg Unload 的帮助。

注释:
• 下表列出了 Reg Unload 操作的返回值。
值 描述
0   成功
1   失败

示例:
要卸载 HKLM 中的配置单元 TempHive,请键入:
Reg UNLOAD HKLM\TempHive

0 0
原创粉丝点击