2012-12-21 28 views
6

Ben dinamik olarak dll yükleyebilen bir uygulama geliştiriyorum C#. Bu donanımlar "uygulamalarım" ı temsil ediyor. Bu uygulamaları izinlerinde sınırlamak istiyorum. Örneğin (temel sorunlarımdan biri) diske erişimi engelliyor. Benim uygulamalar işlevleri ve benim ana uygulama alanının kere kullanarak Çünkü, onları ayrı, korumalı alan uygulama etki alanı içinde çalıştırmak istemiyoruz.Limit derleme izinleri C#

Bu mümkün mü?

+0

hedeflediğiniz Net hangi sürümü:

Burada erişimi kısıtlayabilir kaynakların bazılarıdır. .net 4 ve önceki sürümler arasında bir fark var. –

+0

Özellikle hedefleme, .NET 4;) –

cevap

3

, .Net en Code Access Security, bu amaç için tasarlanmış olan kullanmayı düşünün.

Çeşitli sistem kaynaklarına erişme hakkını temsil eden izinleri ve izin kümelerini tanımlar.

belgelerine kopyalayan olmadan, bana sadece uygulamanın kod eklenti koduna çağrı, ancak yeni konuları başlayan veya bir disk erişme gibi belirli şeyleri yapmaktan bunu kısıtlayabilir diyelim.

+0

Teşekkürler, bu aramaya başlamak için iyi bir yol olabilir;) –

+2

Tamam, hiçbir yararlı örnek bulamadım. Benim için bir tane var mı? –

1

İzin almak istediğiniz yönleri anladığımdan emin değilim. "Uygulamanın" ana uygulamaya, nolu telefonun'a gereksinim duyduğunu varsayarak (neredeyse bir android uygulamasının telefona nasıl izin verdiği gibi) her modülün istediği erişim seviyelerini uyguladığı ve tanımladığı bir IAccessRights arabirimini tanımlayabilirsiniz. sahip olabilmek.

public interface IAccessRights 
{ 
    Bool CanReadFromDisk { get; } 
    Bool CanWriteToDisk { get; }; 
    Bool CanAccessNetwork { get; } 
} 

Sonra arayüzü ve nesne için yük zaman kontrol noktasında sınıfına uygulanması ve buna uygun olarak izin koordine etmek için modül var. iki yönlü olması gerekiyorsa, ana uygulamanın modüle haklarını (izin ver) ayarlamasına izin veren bir desen çalışın.

Yan not: Bunun dışında, sistemin kendisinin içine girmeden (kancalar ve ne yapmıyorsa) File.Delete gibi doğrudan çağrılara izin vermenin bir yolunu göremiyorum.