# SetRegView

设置 RegRead, RegWrite, RegDelete, RegDeleteKey 和 Loop Reg 使用的注册表视图, 允许它们在 32 位脚本中访问 64 位注册表视图, 反之亦然.

    SetRegView RegView

## 参数

RegView

  类型: 整数或字符串

  指定 32 以 32 位程序的方式来查看注册表, 而 64 以 64 位程序的方式浏览注册表.

  指定单词 Default 来恢复到默认的行为.

## 备注

此命令仅在 64 位 Windows 上有用. 它在 32 位 Windows 中没有效果.

在 64 位系统中, 32 位程序运行于被称为 WOW64 的 Windows 子系统中. 默认情况下, 系统会重定向某些注册表键来避免冲突. 例如, 在 32 位脚本中, `HKLM\SOFTWARE\AutoHotkey` 会被重定向到 `HKLM\SOFTWARE\Wow6432Node\AutoHotkey`. SetRegView 允许 32 位脚本中的注册表命令访问在 64 位注册表视图中被重定向的键, 反之亦然.

内置变量 A_RegView 包含了当前设置. 每个新运行的线程(例如热键, 自定义菜单项或计时子程序) 都会以此函数的默认设置开始. 这个默认设置可以通过在脚本启动中使用此函数来改变.

## 相关

RegRead, RegWrite, RegDelete, RegDeleteKey, Loop Reg

## 示例

演示了如何设置特定的注册表视图以及注册表重定向对脚本的影响.

    ; 以 32 位程序的方式访问注册表.
    SetRegView 32
    RegWrite "REG_SZ", "HKLM\SOFTWARE\Test.ahk", "Value", 123

    ; 以 64 位程序的方式访问注册表.
    SetRegView 64
    value := RegRead("HKLM\SOFTWARE\Wow6432Node\Test.ahk", "Value")
    RegDelete "HKLM\SOFTWARE\Wow6432Node\Test.ahk"

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

    ; 恢复默认的注册表视图, 这
    ; 取决于脚本是 32 位还是 64 位的.
    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 "."

dftg