0

ネイティブ C アプリケーションから呼び出された混合モード DLL の読み込みに失敗しました: タイプ 'System.IO.FileLoadException' の未処理の例外が不明なモジュールで発生しました。

追加情報: ファイルまたはアセンブリ 'XXSharePoint, Version=0.0.0.0, Culture=neutral, PublicKeyToken=e0fbc95fd73fff47' またはその依存関係の 1 つを読み込めませんでした。最小限の権限リクエストを許可できませんでした。(HRESULT からの例外: 0x80131417)

私の環境は次のとおりです。混合モードの C++ DLL を呼び出し、C# DLL をロードするネイティブ C アプリケーション。ローカル ドライブからロードすると正しく動作しますが、ネットワーク ドライブから起動すると、上記のメッセージで失敗します。

LoadLibrary の呼び出しは成功し、GetProcAddress も成功します。関数を呼び出すとロードエラーが発生します。

C アプリケーションにデジタル署名し、2 つの DLL に対して "厳密な名前" 署名を実行しました。上記のメッセージの PublicKeyToken は、指定された DLL と一致します。また、クライアントで CASPOL コマンドを発行して、その厳密な名前のキートークンに FullTrust を付与しました。それがうまくいかなかったとき、ネットワーク ドライブの URL (アプリケーションのディレクトリへのパスを含む) に FullTrust を許可する CASPOL コマンドを試しました。結果に変化なし。

最初の混合モード DLL だけが存在するように、すべての依存関係を削除しようとしました... すべての関数の本体を、「成功した」整数値の戻り値に置き換えました。結果は変わりません。混合モードから Win32 に変更し、構成プロパティ >> 一般 >> 共通言語ランタイム サポートを「共通言語ランタイム サポート」から「共通言語ランタイム サポートなし」に変更した場合にのみ、DLL を呼び出すと期待どおりの結果が得られました (ちょうど「成功」整数の戻り値を返しました)。

4

1 に答える 1

1

この共有でコードを実行する権限がありません。共有から.NETアプリを実行することはできないと思います。試してみて、.NET 実行可能ファイルを共有に配置し、実行してみてください。うまくいかない場合は、共有を使用するために .net 構成にアクセス許可を追加する必要があります。

于 2009-09-02T15:24:55.050 に答える