Windows 7 上的 AppInit_DLL(64 位版本)
我编写了一个 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 位版本,该应用程序会启动但立即崩溃。
你们知道这个问题有什么解决办法吗?
I have written a DLL that will help me debug my app. I am running a 64 bit version of windows7. Here is what I am observing:
(1) If I set HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs and run the 32 bit version of my application, the DLL gets loaded and everything is okay.
(2) If I set HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs and run the 64 bit version of my application, the application starts but it crashes immediately.
Do you guys know any solution for this problem?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
AppInit_DLL 可用于 Win7 上的 64 位应用程序,但您可能不满足要求。
a)您可能需要知道这一点:http:// /msdn.microsoft.com/en-us/library/dd744762(v=VS.85).aspx。
b) 如果是你的应用程序和你的 DLL,请跳过整个 AppInit_DLLs 机制,该机制既混乱又不安全,只需在正确的时间执行你自己的 LoadLibrary 即可。
马丁
AppInit_DLLs can work for 64 bit apps on Win7, but you proably aren't meeting the requirements.
a) You probably need to know this: http://msdn.microsoft.com/en-us/library/dd744762(v=VS.85).aspx.
b) If it is your app and your DLL, skip the whole AppInit_DLLs mechanism which is messy and usafe, and just do your own LoadLibrary at the right time.
Martyn
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
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs
is the registry key for the default CPU architecture, in your case 64-bit.To hook a 32-bit process on a 64-bit OS, use:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs