我在
Haskell中有一个
Windows程序(因此是32位).我想访问注册表的64位视图. Windows API表示在KEY_WOW64_64KEY(0x200)中使用RegOpenKeyEx和OR. (我将
standard Haskell bindings用于Haskell平台附带的Windows API.)
在我的程序中,这最终是:
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 -> ...
但是,我得到异常RegOpenKeyEx:无效参数(系统找不到指定的文件.)
API调用以某种方式最终丢弃了标志并进入Wow6432Node子树.还说明了,尽管事件包含了RegOpenKey,我认为它实际上调用了RegOpenKeyEx,如事件的堆栈(以及绑定的错误消息)所示.
有什么建议?
谢谢!
解决方法
alternate registry view flags是:
KEY_WOW64_64KEY 0x0100 KEY_WOW64_32KEY 0x0200
但你写道:
let kEY_WOW64_64KEY = 0x200
所以你实际上是在寻求32位视图.你需要写:
let kEY_WOW64_64KEY = 0x100
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。