我在这里有一个奇怪的问题。 我试图通过命令行(batch file),并通过使用REG.EXE (因为它不要求UAC访问本身)禁用UAC。 我已经能够创build一个目标的快捷方式(.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
如果我以pipe理员身份运行它 – 完全没有问题,它会更改registry。 如果我尝试通过命令行本身运行该命令(作为完全相同的pipe理员运行),我得到访问被拒绝 。
最后,我想把它移动到一个批处理脚本,但是一旦我能够在命令行上运行它就没有问题了。 有任何想法吗? 谢谢。
仅仅因为它没有提示UAC升级,并不意味着它不需要它。
它需要它。
您需要从升级的上下文中运行它 – 升级的命令提示符,具有“作为最高权限运行”选项的计划任务。 没有某种forms的权限升级,registry就无法修改。
你需要一个提升的环境来做到这一点。 我search了太多的我需要的任务,并且找不到从batch file中的提示请求提升的方法。
然而,与Shane Madden在前面的回答的评论中提到的相反,自古以来,我一直使用prnwatch.com上的Prio来自动无声地提升某些进程。 当然,如果你将分发你的batch file在其他计算机上运行,你不能指望….