RegWrite返回ErrorLevel 1

时间:2013-09-29 23:15:45

标签: autohotkey

平台和设置:

AutoHotkey_L Unicode x86 1.1.13.0

RegView =默认

64位操作系统(W7)

32位脚本

嗨伙计,

以下代码行返回ErrorLevel = 1:

的RegWrite,REG_DWORD,HKLM,SOFTWARE \微软\的Windows \ CurrentVersion \政策\系统,PromptOnSecureDesktop,0

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

1 个答案:

答案 0 :(得分:0)

注册表项的操作通常会假定管理员权限,如果UAC未关闭,则必须明确获取WIN Vista或更高版本的管理员权限。
对于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
  }
}