โดยปกติโปรแกรมที่เขียนด้วย VB สามารถทำงานได้ตามปกติบนระบบ 32 บิต แต่บนระบบ 64 บิต สามารถทำงานได้ แต่ไม่สามารถแก้ไขข้อมูล OEM ได้ หลังจากค้นหาสาเหตุแล้ว เราพบว่าเมื่อเราเข้าถึงโฟลเดอร์ "SYSTEM32" ระบบจะเปลี่ยนเส้นทางไปยังโฟลเดอร์ "SYSWOW64" โดยอัตโนมัติ เมื่อเราเข้าถึงรีจิสตรีคีย์บางอันซึ่งคล้ายกับการเปลี่ยนเส้นทางไฟล์ ระบบจะเปลี่ยนเส้นทางโดยอัตโนมัติด้วย โปรแกรมเข้าถึง Wow6432Node
เรามาพูดถึงการเปลี่ยนเส้นทางระบบไฟล์กันก่อน ฉันค้นหาข้อมูลบางอย่างแล้ว แต่ไม่มีข้อมูลที่เกี่ยวข้องกับ VB แต่ฉันพบฟังก์ชันที่เกี่ยวข้องสองฟังก์ชัน: Wow64DisableWow64FsRedirection (ปิดการเปลี่ยนเส้นทางระบบ) และ Wow64RevertWow64FsRedirection (เปิดการเปลี่ยนเส้นทางระบบ)
คำชี้แจงของ VB มีดังนี้:
ฟังก์ชันการประกาศส่วนตัว Wow64RevertWow64FsRedirection Lib "kernel32.dll" () ฟังก์ชันการประกาศส่วนตัว Wow64DisableWow64FsRedirection Lib "kernel32.dll" ()
จากนั้น ใช้คำสั่ง CALL Wow64DisableWow64FsRedirection เพื่อปิดการเปลี่ยนเส้นทางระบบไฟล์
พูดคุยเกี่ยวกับการควบคุมคีย์รีจิสทรี:
ยังไม่มีข้อมูล VB เกี่ยวกับเรื่องนี้ แต่ฉันรู้ว่ามีฟังก์ชัน RegOpenEx (VB มีฟังก์ชันนี้ ดูเบราว์เซอร์ API สำหรับการใช้งาน) ที่สามารถตัดสินใจได้ว่าจะเปลี่ยนเส้นทางหรือไม่ เพียงเพิ่ม 256 (&H100) ไปยัง samDesired [Long] พารามิเตอร์ของฟังก์ชันเพื่อเข้าถึงรีจิสทรี 64 บิต เนื่องจากมีรหัสรีจิสทรีการเข้าถึง API จำนวนมาก ฉันจึงไม่โพสต์ไว้ที่นี่