Tim*_*Tim 4 registry winapi haskell
我在Haskell中有一个Windows程序(因此是32位).我想访问注册表的64位视图.Windows API说要使用RegOpenKeyEx和KEY_WOW64_64KEY(0x200)in ().(我使用Haskell平台附带的Windows API 的标准Haskell绑定.)
在我的程序中,这最终是:
import qualified System.Win32.Registry as W32
import qualified System.Win32.Types as W32
...
let kEY_WOW64_64KEY = 0x200 -- has no binding in the library currently
let regSam = kEY_WOW64_64KEY .|. ... other flags
bracket (W32.regOpenKeyEx rootCode kname regSam) W32.regCloseKey $ \k -> ...
Run Code Online (Sandbox Code Playgroud)
但是,我得到了例外 RegOpenKeyEx: invalid argument (The system cannot find the file specified.)
检查Process Monitor中的调用显示以下输出:

API调用不知何故最终丢弃了标志并进入Wow6432Node子树.还说明了,尽管事件暗示RegOpenKey我认为它实际上RegOpenKeyEx是在事件的堆栈(以及绑定的错误消息)中显示的.
有什么建议?
谢谢!
的备用注册表视图标志是:
KEY_WOW64_64KEY 0x0100
KEY_WOW64_32KEY 0x0200
Run Code Online (Sandbox Code Playgroud)
但你写道:
let kEY_WOW64_64KEY = 0x200
Run Code Online (Sandbox Code Playgroud)
所以你实际上是在寻求32位视图.你需要写:
let kEY_WOW64_64KEY = 0x100
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
264 次 |
| 最近记录: |