如何让批处理文件执行注册表文件

10

我有以下代码

@echo off
file.reg
pause
这个可以运行,但当批处理文件被提升权限时,会出现找不到文件的错误。有人知道我做错了什么吗?
2个回答

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

试一下

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

set __COMPAT_LAYER=RunAsInvoker

如果您的脚本未以管理员身份运行,那么这将防止用户账户控制弹出。


10

可能,使用提升的特权启动批处理文件会将启动目录更改为 %windir%\system32cmd.exe所在的路径)。

用法:

"%~dp0\file.reg"
始终在批处理文件所在目录中执行file.reg。 还可以考虑使用REG命令,它允许您对注册表执行控制台操作(查看REG /?)。

当涉及到加载 .reg 文件时,我更喜欢使用 REGEDIT /S 来避免弹出窗口。当你没有管理员权限时,REG 是一个相当好的选择,因为它会检查每个注册表键的权限,但不幸的是,它并不适用于所有的 Windows 系统(特别是家庭版)。但还是给个赞。 - npocmaka

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