通常用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訪問注冊表代碼較多就不往上貼了。
新聞熱點
疑難解答
圖片精選