「部分的に信頼された」.NET アセンブリをネットワーク共有から実行する
質問
.NET アセンブリを実行しようとすると (boo.exe
) (ドライブにマップされた) ネットワーク共有からの接続は、部分的にしか信頼されていないため失敗します。
Unhandled Exception: System.Security.SecurityException: That assembly does not allow partially trusted callers.
at System.Security.CodeAccessSecurityEngine.ThrowSecurityException(Assembly asm, PermissionSet granted, PermissionSet refused, RuntimeMethodHandle rmh, SecurityAction action, Object demand, IPermission permThatFailed)
at BooCommandLine..ctor()
at Program..ctor()
at ProgramModule.Main(String[] argv)
The action that failed was:
LinkDemand
The assembly or AppDomain that failed was:
boo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=32c39770e9a21a67
The Zone of the assembly that failed was:
Intranet
The Url of the assembly that failed was:
file:///H:/boo-svn/bin/boo.exe
からの指示により、 ブログ投稿, 、すべてのアセンブリを完全に信頼するポリシーを .NET 構成に追加しました。 file:///H:/*
URLとして。URLを入力して確認しました file:///H:/boo-svn/bin/boo.exe
に アセンブリの評価 .NET 構成のツールを使用し、boo.exe に 無制限 許可 (ポリシーが適用される前には許可されていませんでした)。
たとえ許可があったとしても、 boo.exe
走らない。まだ同じエラーメッセージが表示されます。
この問題をデバッグするにはどうすればよいでしょうか?実行したいアセンブリごとに何かを変更することなく、ネットワーク共有から「部分的に信頼された」アセンブリを実行する別の方法はありますか?
解決
.NET 3.5 SP1 では、UNC 共有から実行される .NET アセンブリには完全なアクセス許可が与えられます。
ブラッド・エイブラムスの作品を参照 .exe をネットワーク共有から実行できるようにする 回避策とディスカッション、そして最後にフォローアップについて .NET 3.5 SP1 では、マネージド コードをネットワーク共有から起動できるようになります.
他のヒント
を使用して問題を解決しました caspol
Johnny Hughes のブログ投稿で指示されているとおり ネットワーク共有からの .Net アプリケーションの実行:
caspol -addgroup 1.2 -url file:///H:/* FullTrust
ポリシーを管理するための .NET 構成 GUI が機能していないようです。
「caspol.exe」プログラム (.NET ランタイムで提供) を見てください。アプリケーションを実行しようとしているマシン上でこれを行う必要があります。「マーク」を付けて組み立てることができませんでした(おそらく私だけ)。ただし、caspol を使用し、アプリ LocalIntranet_Zone に適切な権限を設定すると、同様の問題が解決します。
.NET 3.5 SP1 では、この厳しいセキュリティ要件が削除されたと聞いています (ただし、まだ試していません)。
を追加したいと思います 部分的に信頼できる発信者を許可する あなたのアセンブリに帰属します。このエラー メッセージは、boo.exe アセンブリを呼び出しているものが完全には信頼されておらず、boo.exe にはそれを許可するこの属性がないことを示しています。