DLLを動的にロードできるC#でアプリケーションを開発しています。これらのdllは私の "apps"を表しています。私は、これらのアプリケーションを自分の権限で制限したいと考えています。たとえば(私の主な問題の1つ)、ディスクへのアクセスが妨げられます。私のアプリは主なアプリドメインの機能とインスタンスを使用しているので、別々のサンドボックス化されたappdomainで動作させたくありません。Cでのアクセス権でアセンブリを制限する#
これはとにかく可能ですか?
DLLを動的にロードできるC#でアプリケーションを開発しています。これらのdllは私の "apps"を表しています。私は、これらのアプリケーションを自分の権限で制限したいと考えています。たとえば(私の主な問題の1つ)、ディスクへのアクセスが妨げられます。私のアプリは主なアプリドメインの機能とインスタンスを使用しているので、別々のサンドボックス化されたappdomainで動作させたくありません。Cでのアクセス権でアセンブリを制限する#
これはとにかく可能ですか?
あなたはディスクアクセスを言及しているので、この目的のために設計されました。ネットのCode Access Securityを、使用することを検討してください。
さまざまなシステムリソースへのアクセス権を表すアクセス許可とアクセス許可セットを定義します。
ドキュメントを複製せずに、アプリケーションのコードがプラグインのコードを呼び出すかもしれませんが、新しいスレッドの開始やディスクへのアクセスなどの特定の作業を行うことを制限するとしましょう。
ありがとうございます、これは検索をやり直すのに良い方法かもしれません;) –
さて、有用な例は見つかりませんでした。あなたは私のために1つを持っていますか? –
アクセス許可をどの方向に移動するのか分かりません。 にはが必要です(ほとんどの場合、アンドロイドアプリが電話に許可する信号と同じように)IAccessRights
インターフェイスを定義して、各モジュールが必要とするアクセスレベルを実装および定義することができます。持てる。
public interface IAccessRights
{
Bool CanReadFromDisk { get; }
Bool CanWriteToDisk { get; };
Bool CanAccessNetwork { get; }
}
インターフェイスのクラスを実装し、読み込み時にオブジェクトをチェックし、それに応じてアクセス権を調整するモジュールがあります。 2つの方法が必要な場合は、メインアプリケーションがモジュールに対する権利を設定(許可)できるようにするパターンを作成します。
サイドノート:これ以外にも、システム自体に深く入り込むことなく、File.Delete
のような直接の呼び出しを禁止する方法はありません(フックと無関係)。
私は確かにそれをすべて実装する方法はわかりませんが、インタフェースIPermissionが必要なように見えます。
あなたがターゲットとしている。ネットのどのバージョン:
は、ここでは、へのアクセスを制限できるリソースの一部です。 .net 4とそれ以前のバージョンには違いがあります。 –
主に.NET 4をターゲットにしています; –