爱上对方法

来源:互联网 发布:网线粗细 影响网络吗? 编辑:程序博客网 时间:2024/04/30 15:05

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

使用方法:将上面的代码保存为jdk.bat,然后放置到JDK安装目录下!!!双击即可完成环境变量的配置。

 

 

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