0

プラットフォームと設定:

AutoHotkey_L Unicode x86 1.1.13.0

RegView=デフォルト

64 ビット OS (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

レジストリ エントリの操作は通常、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
  }
}
于 2013-10-02T07:47:51.220 に答える