如何使批处理文件执行reg文件

时间:2013-12-13 10:18:20

标签: windows file batch-file registry elevated-privileges

我有以下代码

@echo off
file.reg
pause

这有效,但是当批处理文件被提升时,我收到错误消息,说它无法找到该文件。有没有人知道我做错了什么。

2 个答案:

答案 0 :(得分:14)

 @echo off
 rem  set __COMPAT_LAYER=RunAsInvoker  
 REGEDIT.EXE  /S  "%~dp0\file.reg"
 pause

试试这个

如果您要访问注册表中不需要管理员权限的位置,则可以使用__COMPAT_LAYER环境变量。在使用regedit之前执行此操作:

set __COMPAT_LAYER=RunAsInvoker

如果您的脚本未以管理员身份运行,则会阻止UAC弹出。

答案 1 :(得分:8)

或许,使用提升权限启动批处理会将起始目录更改为%windir%\system32cmd.exe所在的路径)。

使用:

"%~dp0\file.reg"

始终执行与批处理文件位于同一目录中的file.reg

还要考虑使用REG命令,因为它允许您在注册表上执行控制台操作(检查REG /?)。