1

この devx 記事の例に基づいて、C++ で非常に基本的な Windows パスワード フィルターを実装しようとしています。

ただし、適切な reg エントリが設定され、DLL が system32 にコピーされて再起動されているにもかかわらず、LSA は DLL をロードしていません (msinfo32 のロードされたモジュールには何もありません)。これは 2003 x64 および 2008R2 (明らかに x64 でも) で発生します。stackoverflow を検索し、これまでのすべての推奨事項を実装しました。

私はVS2012を使用しています。x64 および /MT に設定されており (したがって、再配布の権利は必要ありませんか?)、.def ファイルが正しく参照されていることを確認しました。依存関係ウォーカーでは、「暗黙的に依存するモジュールにエクスポート関数がないため、少なくとも 1 つのモジュールに未解決のインポートがあります」と表示されますが、3 つの関数が正しくエクスポートされていることがわかります。また、kernel32.dll に一部のインポートが欠落していると主張しています (それが関連しているかどうかは不明です)。

LSA が DLL をロードするときに何が起こっているかをデバッグするにはどうすればよいですか? 注: 私は開発者ではないため、上記の一部は、特にコンパイル/リンク時および関数のエクスポート時の動作に関して、かなりあいまいです。

どうもありがとう

4

1 に答える 1

5

情報を確認した後: https://support.microsoft.com/en-us/kb/2686224

サーバー 2012 のパスとファイル拡張子を指定しないために従った情報が正しくないことがわかりました。この情報でレジストリを更新し、msvcp100.dll および msvcr100.dll と共に x64 dll を System32 フォルダーに配置しました ( dllをコンパイルしたマシンのsystem32ディレクトリ)。再起動、テスト、BAM!

システム イベント ログを確認し、Directory-Services-SAM の ERROR エントリを探します。次のいずれかが表示されます。パスワード通知 DLL C:\Windows\System32\PasswordFilterRegEx.dll がエラー 126 でロードできませんでした。 \Windows\System32\PasswordFilterRegEx.dll がエラー 193 で読み込めませんでした

126 は、dll 自体が見つからなかったか (レジストリ エントリにパスが見つからない可能性があります)、または依存関係 (私の場合は msvcp100.dll と msvcr100.dll) が見つからないことを意味します。

193 は、アーキテクチャの不一致が原因で dll を読み込めないことを意味します (たとえば、32 ビット OS を実行しているのに 64 ビット dll を読み込もうとしている、またはその逆)。

于 2016-04-01T03:37:40.127 に答える