我尝试通过批处理文件使用 REGEDIT 命令禁用 UAC,一切正常 - 但是,我需要能够在不单击的情况下执行此操作。当我运行:
REGEDIT /S somefile.reg
它工作正常,除了需要并首次单击以允许此命令。有什么办法可以解决这个问题吗?我正在(暂时)通过注册表编辑禁用 UAC,但在此之前它处于启用状态。谢谢。
答案1
先有鸡还是先有蛋?
不过,说真的,您尝试做的事情“不应该”是可能的,因为 UAC(尽管微软声称它不是正式的安全边界)是一种安全边界。
在域环境中,您应该从组策略中控制用户帐户控制(组策略的计算机部分中的“安全设置\本地策略\安全选项”下的“用户帐户控制:在管理员批准模式下运行所有管理员”设置可能是您要找的)。
如果您处于非域环境中,则需要在已提升权限的上下文中运行该脚本。正如 @womble 在其评论中所说,您需要绕过 UAC 才能在不调用 UAC 的情况下禁用 UAC。计算机启动脚本是您可以运行此脚本的一个地方。但是,要将其安装为启动脚本,您必须提升权限。那么,您又回到了先有鸡还是先有蛋的问题。
答案2
如果您正在访问注册表中不需要管理员权限的位置,则可以使用__COMPAT_LAYER
环境变量。只需在使用 regedit 之前执行此操作:
set __COMPAT_LAYER=RunAsInvoker