我有以下代码
@echo off
file.reg
pause
这个可以运行,但当批处理文件被提升权限时,会出现找不到文件的错误。有人知道我做错了什么吗?我有以下代码
@echo off
file.reg
pause
这个可以运行,但当批处理文件被提升权限时,会出现找不到文件的错误。有人知道我做错了什么吗? @echo off
rem set __COMPAT_LAYER=RunAsInvoker
REGEDIT.EXE /S "%~dp0\file.reg"
pause
试一下
如果您正在访问不需要管理员权限的注册表位置,则可以使用__COMPAT_LAYER
环境变量。只需在使用regedit之前执行此操作:
set __COMPAT_LAYER=RunAsInvoker
如果您的脚本未以管理员身份运行,那么这将防止用户账户控制弹出。
可能,使用提升的特权启动批处理文件会将启动目录更改为 %windir%\system32
(cmd.exe
所在的路径)。
用法:
"%~dp0\file.reg"
始终在批处理文件所在目录中执行file.reg
。
还可以考虑使用REG
命令,它允许您对注册表执行控制台操作(查看REG /?
)。
.reg
文件时,我更喜欢使用REGEDIT /S
来避免弹出窗口。当你没有管理员权限时,REG
是一个相当好的选择,因为它会检查每个注册表键的权限,但不幸的是,它并不适用于所有的 Windows 系统(特别是家庭版)。但还是给个赞。 - npocmaka