我写了一个DLL,可以帮助我调试我的应用程序。我正在运行64位版本的windows7。以下是我观察的内容:
(1)如果我设置HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows NT \ CurrentVersion \ Windows \ AppInit_DLLs并运行我的应用程序的32位版本,DLL将被加载,一切正常。 (2)如果我设置HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Windows \ AppInit_DLLs并运行我的应用程序的64位版本,应用程序启动但它立即崩溃。
你们知道解决这个问题的方法吗?
答案 0 :(得分:2)
AppInit_DLLs适用于Win7上的64位应用程序,但您可能无法满足要求。
a)您可能需要知道这一点:http://msdn.microsoft.com/en-us/library/dd744762(v=VS.85).aspx。
b)如果它是你的应用程序和你的DLL,跳过整个AppInit_DLLs机制,这是一个混乱和美国,并且只是在合适的时间做你自己的LoadLibrary。
马丁
答案 1 :(得分:2)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs
是默认CPU架构的注册表项,在您的情况下是64位。
要在64位操作系统上挂钩32位进程,请使用:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs