通常用VB 寫的程式在32位元系統上可以正常的運行,但到了64位元系統中雖然可以運行但是無法修改OEM資訊。經過查找原因可以發現,當我們在存取資料夾"SYSTEM32"的時候系統會自動轉向到資料夾"SYSWOW64"下,當我們在存取某些登錄鍵值的時候,和檔案轉向類似,系統也會自動地把程式的存取轉向到Wow6432Node下面。
先來談談檔案系統的轉向,找到了一些資料,並沒有VB相關的資料,但可以查到2個相關函數:Wow64DisableWow64FsRedirection(關閉系統轉向)和Wow64RevertWow64FsRedirection(開啟系統轉向)。
VB的聲明如下:
Private Declare Function Wow64RevertWow64FsRedirection Lib "kernel32.dll" ()Private Declare Function Wow64DisableWow64FsRedirection Lib "kernel32.dll" ()
然後用CALL Wow64DisableWow64FsRedirection語句來關閉檔案系統的轉向。
再來談談註冊表項的轉向:
這個依然沒有VB方面的資料,但是知道有函數RegOpenEx(VB有這個函數,用法見API瀏覽器)可以決定是否轉向,只要在函數的samDesired【Long】參數上加256(&H100)就可以訪問64位的註冊表了。由於API存取註冊表代碼較多就不往上貼了。