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

09s*_*enb 9 windows registry file batch-file elevated-privileges

我有以下代码

@echo off
file.reg
pause
Run Code Online (Sandbox Code Playgroud)

这可以工作但是当批处理文件被提升时,我收到一条错误,说它无法找到该文件.有没有人知道我做错了什么.

npo*_*aka 14

 @echo off
 rem  set __COMPAT_LAYER=RunAsInvoker  
 REGEDIT.EXE  /S  "%~dp0\file.reg"
 pause
Run Code Online (Sandbox Code Playgroud)

试试这个

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

set __COMPAT_LAYER=RunAsInvoker
Run Code Online (Sandbox Code Playgroud)

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


LS_*_*ᴅᴇᴠ 9

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

使用:

"%~dp0\file.reg"
Run Code Online (Sandbox Code Playgroud)

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

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