2012-06-06 16 views
7

से एक असेंबली ट्रस्ट मैं एक सैंडबॉक्स वाले ऐप-डोमेन बनाने की कोशिश कर रहा हूं। इसे प्राप्त करने के लिए, मैं AppDomain.CreateDomain का उपयोग कर रहा हूं, जिससे डीएलएल को सैंडबॉक्स किया जा सकता है।.net 4 आंशिक ट्रस्ट जीएसी

हालांकि, मैंने देखा कि यदि डीएलएल जीएसी में है, तो डीएलएल पूरी तरह भरोसेमंद है, इस प्रकार यदि वहां PermissionSet.Assert होगा, तो यह अप्रतिबंधित पहुंच प्राप्त कर सकता है।

तो, मैं अगर वहाँ एक तरीका है सोच रहा था या तो

  1. बल DLL पथ से GAC से नहीं लोड करने के लिए, और, इस प्रकार यह आंशिक-विश्वसनीय हो जाएगा करने के लिए।
  2. या - जीएसी में आंशिक भरोसेमंद होने के लिए एक निश्चित डीएलएल चिह्नित करें।

धन्यवाद!

उत्तर

1

यदि दोनों विधानसभाएं पूरी तरह से हस्ताक्षरित हैं, तो सीएलआर जीएसी में से किसी एक का उपयोग करने जा रहा है। यदि आप लक्षित मार्ग में से किसी एक को हस्ताक्षरित करते हैं, तो सीएलआर इसके बजाय उस का उपयोग करेगा।

यदि यह कोई विकल्प नहीं है, तो आपको CreateDomain ओवरराइड में से एक का उपयोग करने की आवश्यकता है जहां आप असेंबली की अनुमति सेट को परिभाषित कर सकते हैं। ओवरराइड के बारे में अधिक जानकारी यहां मिल सकती है: http://msdn.microsoft.com/en-us/library/ms130766.aspx

उपयोग http://davedewinter.com/2009/05/22/how-to-host-a-partial-trust-sandbox/ से लिया के रूप में का एक उदाहरण ...

static void RunInPartialTrust() 
{ 
    AppDomainSetup setup = new AppDomainSetup 
    { 
     ApplicationBase = Environment.CurrentDirectory 
    }; 

    PermissionSet permissions = new PermissionSet(null); 
    permissions.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution)); 
    permissions.AddPermission(new ReflectionPermission(ReflectionPermissionFlag.RestrictedMemberAccess)); 
    AppDomain appDomain = AppDomain.CreateDomain(
     "Partial Trust AppDomain", 
     null, 
     setup, 
     permissions 
    ); 

    Program p = (Program)appDomain.CreateInstanceAndUnwrap(
     typeof(Program).Assembly.FullName, 
     typeof(Program).FullName 
    ); 

    p.PartialTrustMain(); 
} 
+0

davewinter (http://davedewinter.com/2009/05/22/how-to-host-a-partial-trust -संडबॉक्स /) लिंक अब उपलब्ध नहीं है। क्या लिंक में दर्पण है? – Oli4