C++ Vista/Windows 7的凭据管理器

C++ Vista/Windows 7的凭据管理器,c++,visual-c++,winapi,64-bit,winlogon,C++,Visual C++,Winapi,64 Bit,Winlogon,我用VC++实现了凭证管理器,它在登录过程中捕获凭证。它在XP/Vista/Windows7 32位环境中运行良好。但在64位中不起作用。 有什么想法吗? 提前感谢您的帮助您是否在Visual Studio中构建了64位平台 一个32位环境的Visual C++应用程序在64位环境中不能直接工作。尽管应用程序将使用WOW64兼容层工作,但如果要由64位操作系统加载DLL,它们必须是64位的 因为这里确实是这样,所以您需要为64位平台构建项目(VisualStudio2005和更高版本有64位编译

我用VC++实现了凭证管理器,它在登录过程中捕获凭证。它在XP/Vista/Windows7 32位环境中运行良好。但在64位中不起作用。 有什么想法吗?
提前感谢您的帮助

您是否在Visual Studio中构建了64位平台

一个32位环境的Visual C++应用程序在64位环境中不能直接工作。尽管应用程序将使用WOW64兼容层工作,但如果要由64位操作系统加载DLL,它们必须是64位的

因为这里确实是这样,所以您需要为64位平台构建项目(VisualStudio2005和更高版本有64位编译器)


有关更多详细信息,请参阅链接。

如果希望通过64位进程加载DLL,则必须将DLL编译为64位


如果希望DLL由32位进程加载,则必须将DLL编译为32位。在64位Windows系统和32位Windows系统上都是如此


约翰给了你一个有用的链接,尽管约翰的措辞是错误的。为32位构建的应用程序(exe)将在64位Windows中运行,但它只能加载32位DLL。

请澄清“不工作”。例如,它正在被调用,但功能正常,还是根本没有被调用?最初dll根本没有被调用,但在编译X64的dll后,它被调用了,但现在我没有达到dll的NPLogonNotify实现。@John:我很确定32位env的应用程序构建使用WOW64可以在64位下运行。同意,我已经将其编译为64位,dllmain在winlogon上被调用(通过放置日志进行验证)。但现在的问题是我根本没有收到“NOLogonNotify”函数(我得到的是32位)。。有什么想法吗?????您可能丢失了一些注册表项。如果32位应用程序添加了注册表项,那么该应用程序可能会将它们放在WoW6432节点中,而64位应用程序甚至不会注意到该节点。您需要确保它们位于普通64位凭据注册的正确位置。好吧,让它工作起来,问题是调用约定的运行时异常。感谢您提供建议32位dll与64位dll的帮助。