2012-01-15 9 views
4

私は、コンパイル、ロード、実行されるいくつかのコードをユーザが書くことを許可するプロジェクトに取り組んでいます。このコードはユーザがアプリケーションの特定の部分を制御できるようにします。しかし、実行中のアプリケーションにC#を挿入できるだけで、私は好ましくは適切な制限を設けています。DLLから実行できるC#コードの範囲を制限または制限することはできますか?

コードを実行する方法はありますか?System.Threadingの使用またはSystem.IOの使用をブロックする方法はありますか?

私はコードを実行して参照を削除することは可能ですが、その周りには方法があると確信しています。これを書く前に、私は少なくとも、より簡単で効果的な方法ではないことを確認したいと思います。

私はグーグルではありますが、私は間違った場所を探しているか間違った質問をしています。しかし、スタックオーバーフローの人々は天才だと私は知っています。何か案は?

ありがとうございました。

+1

「サンドボックス」は、あなたがしようとしているような音のための一般的な用語です。それはあなたのグーグルであなたを助けるかもしれません。 –

+1

Sandboxing/CASが道のりです。すべての参照を削除しても、安全でないものがある可能性があります。 'Environment.Exit'は望ましくないかもしれませんがmscorlib.dllにあります –

+0

Sandboxing/CASを見ると、私はそれが行く方法だと思います。みんなありがとう! –

答えて

2

Code Access Securityあなたが探しているものかもしれません。

+0

私はそれかもしれないと思います!ありがとうございました –

+0

AFAICT新しいAppDomainで "分離"されている場合でも、アドイン作成スレッドで処理されない例外を回避するために、コードアクセスセキュリティを使用して新しいスレッドの作成を制限することはできません。 –

0

コードを参照して個々の参照をすべて削除するのではなく、単にプロジェクト参照を制限するのはなぜですか?また、.NETフレームワーク設定スナップインを使用して、さまざまなオプションに基づいてGAC、ドメインアプリケーションなどへのアクセスを管理することによって、システムで.NET権限を活用することができます。 (start> run> mscorcfg.mscを起動してください)しかし、私は新しい4.0オプションがその設定ユーティリティを置き換えるものであるかどうか分かりません。編集:これをさらに進めるには、例えば、入力されたコードをサービスユーザアカウントで実行し、このユーティリティを介してユーザのコードへのアクセスを制限することができます。

+0

残念ながら、アセンブリを読み込んでクラスオブジェクトを使用する主なアプリケーションには完全なアクセス権が必要です。私は、AppDomainsを使って安全に実行する方法を見つけることができると思います。ありがとうございました –

関連する問題