SetRegView

RegReadRegWriteRegDeleteRegDeleteKeyおよびLoop Regが使用するレジストリビューを設定し、32ビットスクリプトで64ビットレジストリビューにアクセスできるようにします(逆も同様)。

SetRegView RegView

パラメータ

RegView

型:整数または文字列

32ビットアプリケーションのようにレジストリを表示する場合は32を、64ビットアプリケーションのようにレジストリを表示する場合は64を指定してください。

通常の動作に戻す場合は、「Default」を指定します。

戻り値

型:文字列

この関数は、前の設定を返します。32、64またはDefaultのいずれかです。

備考

SetRegView関数が使われないときは、初期値はDefaultです。

この機能は、Windows 64ビット版でのみ有効です。Windows 32ビットでは効果がありません。

64ビットシステムでは、32ビットアプリケーションは、WOW64と呼ばれるWindowsのサブシステム上で動作します。デフォルトでは、競合を防ぐために特定のレジストリキーをリダイレクトするようになっています。例えば、32ビットスクリプトの場合、HKLM\SOFTWARE\AutoHotkeyHKLM\SOFTWARE\Wow6432Node\AutoHotkeyへリダイレクトされる。SetRegViewにより、32ビットスクリプトのレジストリ関数が64ビットレジストリビューのリダイレクトされたキーにアクセスできるようになり、その逆も可能です。

組込変数A_RegViewには、現在の設定値が格納されています。

新しく起動するスレッドホットキーカスタムメニュー項目時間指定サブルーチンなど)はすべて、この機能のデフォルト設定で新しくスタートします。このデフォルトは、スクリプト起動時にこの関数を使用することで変更することができます。

RegReadRegWriteRegCreateKeyRegDeleteRegDeleteKeyLoop Reg

特定のレジストリビューを設定する方法、およびレジストリリダイレクトがスクリプトに与える影響について示します。

; Access the registry as a 32-bit application would.
SetRegView 32
RegWrite "REG_SZ", "HKLM\SOFTWARE\Test.ahk", "Value", 123

; Access the registry as a 64-bit application would.
SetRegView 64
value := RegRead("HKLM\SOFTWARE\Wow6432Node\Test.ahk", "Value")
RegDelete "HKLM\SOFTWARE\Wow6432Node\Test.ahk"

MsgBox "Read value '" value "' via Wow6432Node."

; Restore the registry view to the default, which
; depends on whether the script is 32-bit or 64-bit.
SetRegView "Default"
;...

スクリプトが実行されているEXEの種類とオペレーティングシステムを検出する方法を示しています。

if (A_PtrSize = 8)
    script_is := "64-bit"
else ; if (A_PtrSize = 4)
    script_is := "32-bit"

if (A_Is64bitOS)
    OS_is := "64-bit"
else
    OS_is := "32-bit, which has only a single registry view"

MsgBox "This script is " script_is ", and the OS is " OS_is "."