1

ネットワーク ドライブ上の exe 内で Reflection を使用してメソッドを呼び出そうとしていますが、次の例外が発生します。

[2013-07-12 11:58:54 AM] 次のエラーが発生しました:呼び出しのターゲットによって例外がスローされました。内部例外:System.Security.SecurityException: タイプ 'System.Security.Permissions.FileIOPermission、mscorlib、Version=2.0.0.0、Culture=neutral、PublicKeyToken=b77a5c561934e089' のアクセス許可の要求が失敗しました。System.Security.CodeAccessSecurityEngine.Check (オブジェクト要求、StackCrawlMark& stackMark、ブール値 isPermSet) で System.Security.CodeAccessPermission.Demand() で System.IO.FileStream.Init (文字列パス、FileMode モード、FileAccess アクセス、Int32 権限、ブール値) System.IO.FileStream..ctor(文字列パス、FileMode モード、FileAccess アクセス、

セキュリティ設定を読みましたが、invoker EXE をインストールしたくなく、解決策が見つかりません。

これを克服するにはどうすればよいですか?

4

2 に答える 2

0

実行可能ファイルを自分のアセンブリのローカルな場所にコピーして、そこから呼び出すことができます。

于 2013-07-12T10:59:28.093 に答える
0

次のように、証拠インスタンスを作成して LoadForm メソッドに渡すことができます。

#if NET35
            var evidence = new System.Security.Policy.Evidence();
            evidence.AddHost(new System.Security.Policy.Url(assemblyPath));
            evidence.AddHost(new System.Security.Policy.Zone(System.Security.SecurityZone.MyComputer));
            Assembly assembly = Assembly.LoadFrom(assemblyPath, evidence);                        
#elif NET40
            var evidence = new System.Security.Policy.Evidence();
            evidence.AddHostEvidence(new System.Security.Policy.Url(assemblyPath));
            evidence.AddHostEvidence(new System.Security.Policy.Zone(System.Security.SecurityZone.MyComputer));
            Assembly assembly = Assembly.LoadFrom(assemblyPath);                        
#endif

ここで、assemblyPath - アセンブリを含むファイルへのフル パスです (ネットワーク ドライブなど)。

于 2013-07-12T11:04:29.450 に答える