在命令提示符(批处理文件)中运行reg命令?

64

我想在cmd(批处理文件)中运行这段reg代码,但是我无法使其工作。我做错了什么?

[HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel]
"HomePage"=dword:00000001

如果我把它做成一个reg文件并双击,它就可以工作。

Bat文件代码(这个不起作用,没有错误):

@echo off
reg add "HKCU\Software\Policies\Microsoft\Internet Explorer\Control Panel" /V HomePage /T REG_DWORD /F /D 1

有没有打印出任何错误?将pause添加为批处理文件的最后一行。 - David Ruhmann
4个回答

85

当导入注册表文件时,您可能会收到UAC提示。如果您接受它,您将拥有更多权限。

由于您正在写入“策略”键,因此需要具有提升的权限。注册表中的此部分受保护,因为其中包含由系统管理员管理的设置。

或者,您可以尝试从命令提示符运行regedit.exe

regedit.exe /S yourfile.reg

..应该无声地导入reg文件。有关更多命令行选项,请参阅RegEdit命令行选项语法


2
不应该有任何UAC问题,他正在写入HKCU。 - Harry Johnston
@harry 是的,正确。例如这个可以运行(主页更改) REG ADD "HKCU\SOFTWARE\MICROSOFT\INTERNET EXPLORER\MAIN" /V "START PAGE" /D "http://www.ask.com/" /F - user198989
3
运行 regedit.exe /S yourfile.reg 是一个不好的主意,因为如果出现错误,您将收不到通知。请参见下面的答案。 - Noam Manos

84

在命令行中,最好使用REG工具而不是REGEDIT:

REG IMPORT yourfile.reg

REG是为控制台模式设计的,而REGEDIT是为图形模式设计的。 这就是为什么运行regedit.exe /S yourfile.reg是一个不好的主意,因为如果有错误,您将不会收到通知,而REG工具会提示:

>  REG IMPORT missing_file.reg

ERROR: Error opening the file. There may be a disk or file system error.

>  %windir%\System32\reg.exe /?

REG Operation [Parameter List]

  Operation  [ QUERY   | ADD    | DELETE  | COPY    |
               SAVE    | LOAD   | UNLOAD  | RESTORE |
               COMPARE | EXPORT | IMPORT  | FLAGS ]

Return Code: (Except for REG COMPARE)

  0 - Successful
  1 - Failed

For help on a specific operation type:

  REG Operation /?

Examples:

  REG QUERY /?
  REG ADD /?
  REG DELETE /?
  REG COPY /?
  REG SAVE /?
  REG RESTORE /?
  REG LOAD /?
  REG UNLOAD /?
  REG COMPARE /?
  REG EXPORT /?
  REG IMPORT /?
  REG FLAGS /?

16
我想问题是如何在CMD(bat文件)中运行"reg"命令。搜索答案的人会来到这里...所以我建议他们使用CMD中导入注册表的替代方法。它绝对比Regedit更好。 - Noam Manos

8
如果我没记错,reg add 命令如果路径不存在,则不会创建整个目录路径。也就是说,如果任何父级注册表键不存在,则必须手动逐个创建它们。我知道这真的很烦人!例如:
@echo off
reg add "HKCU\Software\Policies"
reg add "HKCU\Software\Policies\Microsoft"
reg add "HKCU\Software\Policies\Microsoft\Internet Explorer"
reg add "HKCU\Software\Policies\Microsoft\Internet Explorer\Control Panel"
reg add "HKCU\Software\Policies\Microsoft\Internet Explorer\Control Panel" /v HomePage /t REG_DWORD /d 1 /f
pause

1
谢谢。但是它显示“权限被拒绝”。 - user198989
6
如果显示“权限被拒绝”,则需要使用管理员身份运行 reg add。此外,您很可能可以从我的示例中删除前两个 reg add 语句,因为它们几乎总是存在的。要了解一种批量授予管理员权限的方法,请参阅我的帖子:http://stackoverflow.com/a/13869544/891976。 - David Ruhmann
4
以下命令在我的Windows XP SP3电脑上成功运行:reg add hkcu\software\aaa\aaa /ve /t reg_sz。在运行这个命令之前,“aaa”中的任何一个都不存在,但是两个都被创建了。因此,更有可能是权限问题。 - Andriy M

1

您也可以创建一个组策略首选项,并让它为您创建注册表键(无需编写脚本)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接