我有一個Windows程序在Haskell(因此32位)。我想訪問註冊表的64位視圖。 Windows API說要使用RegOpenKeyEx
,要麼使用KEY_WOW64_64KEY
(0x200
)。 (我現在用的是standard Haskell bindings到Windows API來與Haskell的平臺)從Haskell訪問64位註冊表
在我的程序這最終是:
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: invalid argument (The system cannot find the file specified.)
檢查的在進程監視器調用顯示以下的輸出:
API調用莫名其妙地結束下降的標誌,並進入了Wow6432Node
子樹。還說明了,儘管事件暗指RegOpenKey
我認爲它確實調用RegOpenKeyEx
,如事件堆棧中所示(以及綁定的錯誤消息)。
有什麼建議嗎?
謝謝!
由於ghc 7.6.1也可以在Windows上以64位模式使用Haskell。 –