我正在C#中開發一個能夠動態加載dll的應用程序。這些DLL代表我的「應用程序」。我想限制這些應用程序的權限。例如(我的主要問題之一)阻止訪問光盤。因爲我的應用程序正在使用我的主應用程序域的功能和實例,所以我不希望它們在單獨的沙盒應用程序域中運行。在c#中限制程序集權限#
這是可能嗎?
我正在C#中開發一個能夠動態加載dll的應用程序。這些DLL代表我的「應用程序」。我想限制這些應用程序的權限。例如(我的主要問題之一)阻止訪問光盤。因爲我的應用程序正在使用我的主應用程序域的功能和實例,所以我不希望它們在單獨的沙盒應用程序域中運行。在c#中限制程序集權限#
這是可能嗎?
既然你提到的磁盤訪問,可以考慮使用NET的Code Access Security,這是專爲這一目的。
定義表示訪問各種系統資源權限的權限和權限集。
不用複製文檔,我只是說你的應用程序的代碼可能會調用插件的代碼,但限制它不做特定的事情,如啓動新線程或訪問磁盤。
下面是一些你可以限制訪問的資源:
謝謝,這可能是一個重新搜索的好方法;) –
好吧,我還沒有找到任何有用的例子。你可能有一個給我嗎? –
我不確定我瞭解您希望允許旅行的方向。假設你想要「應用程序」告訴主應用程序需要(幾乎就像android應用程序向手機發送權限的方式),您可以定義每個模塊實現的界面,並定義它想要的訪問級別或可以有。
public interface IAccessRights
{
Bool CanReadFromDisk { get; }
Bool CanWriteToDisk { get; };
Bool CanAccessNetwork { get; }
}
然後,它的向上實現一個類的接口和在該對象負荷時間檢查並相應座標權限模塊。如果需要雙向的話,找出一個允許主應用程序設置(允許)模塊權限的模式。注意:除此之外,我沒有看到直接調用File.Delete
這樣的方法,而沒有深入系統本身(鉤子和什麼不)。
我當然不知道如何實現這一切,但它看起來像接口IPermission可能是必需的,我找到了另一個答案在這可能是有益的。
什麼版本的.NET你定位。 .net 4和之前的版本有所不同。 –
主要針對.NET 4;) –