我有以下代码
@echo off
file.reg
pause
这有效,但是当批处理文件被提升时,我收到错误消息,说它无法找到该文件。有没有人知道我做错了什么。
答案 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%\system32
(cmd.exe
所在的路径)。
使用:
"%~dp0\file.reg"
始终执行与批处理文件位于同一目录中的file.reg
。
还要考虑使用REG
命令,因为它允许您在注册表上执行控制台操作(检查REG /?
)。