0

平台和设置:

AutoHotkey_L Unicode x86 1.1.13.0

RegView=默认

64 位操作系统 (W7)

32 位脚本

嗨伙计,

以下代码行返回 ErrorLevel=1:

RegWrite,REG_DWORD,HKLM,SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System,PromptOnSecureDesktop,0

当我手动修改注册表时,它工作正常。顺便说一句,RegWrite 与 ANSI x86 二进制文件的失败方式相同(我没有尝试过 Unicode x64 二进制文件)。任何人都知道为什么 RegWrite 失败了?谢谢,乔

4

1 回答 1

0

注册表项的操作通常假定管理员权限,从 WIN Vista 或更高版本开始,如果未关闭 UAC,则必须明确获得该权限。
对于 AHK,调用以下函数(source):

RunAsAdmin() {
  Loop, %0%  ; For each parameter:
    {
      param := %A_Index%  ; Fetch the contents of the variable whose name is contained in A_Index.
      params .= A_Space . param
    }
  ShellExecute := A_IsUnicode ? "shell32\ShellExecute":"shell32\ShellExecuteA"

  if not A_IsAdmin
  {
      If A_IsCompiled
         DllCall(ShellExecute, uint, 0, str, "RunAs", str, A_ScriptFullPath, str, params , str, A_WorkingDir, int, 1)
      Else
         DllCall(ShellExecute, uint, 0, str, "RunAs", str, A_AhkPath, str, """" . A_ScriptFullPath . """" . A_Space . params, str, A_WorkingDir, int, 1)
      ExitApp
  }
}
于 2013-10-02T07:47:51.220 回答