3

一部の支払いアプリケーションで次のエラーが発生し始めました。

メソッドPurchasePermitObjectからの予期しないエラー:MakePayment

基になる接続が閉じられました:受信時に予期しないエラーが発生しました。DLL「security.dll」で「EnumerateSecurityPackagesW」という名前のエントリポイントが見つかりません。

エラーは、韻や理由なしに散発的に発生します。この問題を調査したところ、security.dllという名前のdllの使用に問題があることがわかりました。

https://connect.microsoft.com/VisualStudio/feedback/details/104453/existence-of-a-dll-named-security-dll-in-bin-directory-causes-web-service-request-to-fail- with-401-access-denied

現在、アプリケーションはセキュリティdllを使用していますが、接頭辞はABCsecurity.dllであり、MSや他のブログなどによって提供されているソリューションであるため、この問題を防ぐことができたと思います。

これが原因で、どんなアイデアも受け入れられますが、security.dllで終わるものから完全に名前を変更する可能性はありますか?

4

1 に答える 1

0

エラーメッセージは「security.dll」を使用していることを示しているため、「ABCsecurity.dll」とは何の関係もありません。そのマシンのハードドライブで「security.dll」という名前のファイルを検索します

この種の問題は、EXEを含むディレクトリでDLLが見つからない場合に、Windowsがプロセスの現在の作業ディレクトリでDLLを検索することによって発生する可能性があります。これはセキュリティ上の問題であり、Microsoftはそれに対するいくつかの対策を設計しました。最も関連性の高いMSDNページはこちらです。フレームワークコード内に組み込まれているLoadLibrary()呼び出しについては何もできません。マニフェストは少し面倒ですが、最も簡単なのはSafeDllSearchModeレジストリキーです。これにより、c:\ windows \ system32ディレクトリのsecurity.dllファイルが常に最初に検出されてから、作業ディレクトリにランダムにコピーされます。

于 2012-06-11T12:48:33.837 に答える