2010-01-21 50 views
0

У меня есть менеджер учетных данных, реализованный в VC++, который фиксирует учетные данные во время процесса входа в систему. Он хорошо работает в XP/Vista/Windows 7 32 бит env. Но не работает в 64 бит. Любая идея? Заранее спасибо за любую помощьМенеджер учетных данных для Vista/Windows 7

+0

Просьба пояснить, что «не работает». Называется ли он, но функционирует правильно или вообще не используется вообще? – Arnout

+0

Инициализация dll вообще не вызывалась, но после компиляции dll для X64 ее вызывали, но теперь я не дошел до реализации NPLogonNotify dll. – Unicorn

ответ

2

Если вы хотите, чтобы ваша DLL была загружена 64-битным процессом, ваша DLL должна быть скомпилирована для 64 бит.

Если вы хотите, чтобы ваша DLL была загружена 32-разрядным процессом, ваша DLL должна быть скомпилирована для 32 бит. Это справедливо как для 64-разрядных систем Windows, так и для 32-разрядных систем Windows.

Джон дал вам полезную ссылку, хотя формулировка Джона неверна. Приложение (exe), которое построено для 32 бит, будет работать в 64-битной Windows, но может загружать только 32-разрядные библиотеки DLL.

+0

Согласен, я скомпилировал его для 64 бит, и dllmain вызывается в winlogon (проверяется путем ввода журналов). Но теперь проблема в том, что я не получаю функцию «NOLogonNotify» (которой я получаю в 32-битной версии) вообще .. Любые мысли ?????? – Unicorn

+0

Возможно, вам не хватает некоторых записей в реестре. Если 32-разрядное приложение добавило записи реестра, то приложение, вероятно, поместило их в узел WoW6432, который даже не будет замечен 64-разрядными приложениями. Вы должны убедиться, что они находятся в правильном месте для обычных 64-битных регистраций учетных данных. –

+0

Ну, это работало, проблема заключалась в исключении времени выполнения с вызовом. Благодарим за помощь в предоставлении 32-битной DLL-версии 64-разрядной версии. – Unicorn

0

Вы построили для 64-битной платформы в Visual Studio?

Приложение Visual C++, которое построено для 32-разрядной среды, не будет работать непосредственно в среде с 64-разрядной версией. И хотя приложения будут работать с использованием уровня совместимости WOW64, DLL должен быть быть 64-разрядным, если он должен быть загружен 64-разрядной операционной системой.

Так как это действительно так, вам нужно построить свой проект для 64-битной платформы (Visual Studio 2005 и более поздние версии имеют 64-разрядный компилятор).

Для получения более подробной информации см. Ссылку http://msdn.microsoft.com/en-us/library/ms185328.aspx.

+1

@John: Я уверен, что создание приложения для 32-битного env работает на 64-битной основе с использованием WOW64. – Unicorn

Смежные вопросы