![REG.EXE 在命令行中运行时拒绝访问,但不作为 .lnk 运行](https://linux22.com/image/555893/REG.EXE%20%E5%9C%A8%E5%91%BD%E4%BB%A4%E8%A1%8C%E4%B8%AD%E8%BF%90%E8%A1%8C%E6%97%B6%E6%8B%92%E7%BB%9D%E8%AE%BF%E9%97%AE%EF%BC%8C%E4%BD%86%E4%B8%8D%E4%BD%9C%E4%B8%BA%20.lnk%20%E8%BF%90%E8%A1%8C.png)
我这里有一个奇怪的问题。我试图通过命令行(批处理文件)禁用 UAC,并使用注册表编辑器(因为它本身不要求 UAC 访问权限)。我已经能够创建一个快捷方式 (.lnk),目标如下:
C:\Windows\System32\cmd.exe /k %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v ConsentPromptBehaviorAdmin /t REG_DWORD /d 0 /f
如果我以管理员身份运行该命令 - 完全没有问题,它会更改注册表。如果我尝试通过命令行本身运行该命令(以完全相同的管理员身份运行),我会得到拒绝访问。
最后,我想将其移动到批处理脚本,但只要我能够在命令行上运行它,这应该就没问题了。有什么想法吗?谢谢。
答案1
仅仅因为它没有提示 UAC 升级,并不意味着它不需要它。
它需要它。
您需要从升级的上下文中运行它 - 升级的命令提示符、选中“以最高权限运行”的计划任务等。如果没有某种形式的权限升级,注册表根本无法修改。
答案2
您需要提升上下文才能执行此操作。我搜索了太多我需要的任务,但找不到从批处理文件中的提示请求提升权限的方法。
但是,与Shane Madden
上一个答案的评论中提到的相反,我自古以来就一直在使用 prnwatch.com 上的 Prio 来自动静默提升某些进程。当然,如果您要分发批处理文件以在其他计算机上运行,则不能指望这一点。...