2011-06-29 51 views
1

我写了一个DLL,可以帮助我调试我的应用程序。我正在运行64位版本的Windows7。以下是我观察:Windows 7(64位版本)上的AppInit_DLLs

(1)如果我设置HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \微软\的Windows NT \ CURRENTVERSION \的Windows \ AppInit_DLLs和运行我的应用程序的32位版本,该DLL被加载和一切好的。 (2)如果我设置HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Windows \ AppInit_DLLs并运行我的应用程序的64位版本,应用程序启动,但它立即崩溃。

你们知道这个问题的解决方案吗?

+0

对不起。我只是想知道如果AppInit_DLLs功能不应该与64位DLL和64位应用程序在win7上工作 –

+0

如果您使用Appinit_DLLs用户会追捕你,并为你加载可怕的可怕的代码到你的所有程序.... –

回答

1

AppInit_DLLs可以用于Win7上的64位应用程序,但您可能没有达到要求。

a)您可能需要知道这一点:http://msdn.microsoft.com/en-us/library/dd744762(v=VS.85).aspx

b)如果它是你的应用程序和你的DLL,跳过整个AppInit_DLLs机制,这是混乱和美观的,只是在正确的时间做你自己的LoadLibrary。

马丁

1

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