7

パスワード フィルターを実装しようとしているので、簡単なパスワード フィルターを作成します。MSDN のドキュメントに従い、関数が正しく宣言されていることを確認しました。VS 2010 でコンパイルします。


.def ファイル:

LIBRARY myFilt
EXPORTS
   InitializeChangeNotify
   PasswordFilter
   PasswordChangeNotify

.cpp ファイル:

#include <windows.h>
#include <stdio.h>
#include <ntsecapi.h>

void writeToLog(const char* szString)
{
    FILE* pFile = fopen("c:\\work\\logFile.txt", "a+");
    if (NULL == pFile)
    {
        return;
    }
    fprintf(pFile, "%s\r\n", szString);
    fclose(pFile);
    return;
}

// Default DllMain implementation
BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
                     )
{
    OutputDebugString(L"DllMain");
    switch (ul_reason_for_call)
    {
        case DLL_PROCESS_ATTACH:
        case DLL_THREAD_ATTACH:
        case DLL_THREAD_DETACH:
        case DLL_PROCESS_DETACH:
            break;
    }
    return TRUE;
}
BOOLEAN __stdcall InitializeChangeNotify(void)
{
    OutputDebugString(L"InitializeChangeNotify");
    writeToLog("InitializeChangeNotify()");
    return TRUE;
}

BOOLEAN __stdcall PasswordFilter(
  PUNICODE_STRING AccountName,
  PUNICODE_STRING FullName,
  PUNICODE_STRING Password,
  BOOLEAN SetOperation
)
{
    OutputDebugString(L"PasswordFilter");
    return TRUE;
}

NTSTATUS __stdcall PasswordChangeNotify(
  PUNICODE_STRING UserName,
  ULONG RelativeId,
  PUNICODE_STRING NewPassword
)
{
    OutputDebugString(L"PasswordChangeNotify");
    writeToLog("PasswordChangeNotify()");
    return 0;
}

myFilt.dll を に入れ%windir%\system32、レジストリの「通知パッケージ」に「myFilt」を追加し、コンピュータを再起動し、パスワードを変更しましたが、何も起こりません。

depends.exe を開いて、関数が正しく動作していることを確認しました。

InitializeChangeNotify
PasswordChangeNotify
PasswordFilter

どこが間違い??

ありがとう。

4

2 に答える 2

1

問題が見つかりました!ランタイム ライブラリをマルチスレッド デバッグ DLL (/MDd) からマルチスレッド デバッグ (/MTd) に変更したところ、問題なく動作しました。:)

– user1375970 5 月 5 日 10:38

于 2012-07-29T18:59:11.410 に答える
0

通知パッケージ パスワードが設定または変更されたときにロードまたは呼び出されるダイナミック リンク ライブラリ (DLL) を指定します。複数のファイルを指定するには、各ファイル名の間で ENTER を押して、ファイル名を 1 つずつ並べてリストします。

他の上に!</p>

于 2016-09-22T01:56:28.743 に答える