2012-12-21 34 views
6

में इसकी अनुमतियों में सीमित असेंबली मैं सी # में एक एप्लीकेशन विकसित कर रहा हूं जो गतिशील रूप से डीएलएस लोड करने में सक्षम है। ये डीएलएस मेरे "एप्स" का प्रतिनिधित्व कर रहे हैं। मैं इन ऐप्स को उनकी अनुमतियों में सीमित करना चाहता हूं। उदाहरण के लिए (मेरी मुख्य समस्याओं में से एक) डिस्क तक पहुंच को रोकता है। चूंकि मेरे ऐप्स मेरे मुख्य ऐप डोमेन की कार्यक्षमताओं और उदाहरणों का उपयोग कर रहे हैं, इसलिए मैं नहीं चाहता कि वे एक अलग, सैंडबॉक्स वाले एपडोमेन में चलें।सी #

क्या यह वैसे भी संभव है?

+0

आप नेट के किन संस्करणों को लक्षित कर रहे:

यहाँ संसाधनों आप एक्सेस सीमित कर सकते हैं। .NET 4 और पूर्व संस्करणों के बीच एक अंतर है। –

+0

मुख्य रूप से .NET 4 पर लक्ष्यीकरण;) –

उत्तर

3

जब से तुम डिस्क पहुँच उल्लेख किया है, नेट के Code Access Security है, जो इस उद्देश्य के लिए डिजाइन किया गया था उपयोग करने पर विचार।

विभिन्न सिस्टम संसाधनों तक पहुंचने के अधिकार का प्रतिनिधित्व करने वाले अनुमतियों और अनुमति सेट को परिभाषित करता है।

प्रलेखन नकल के बिना, मुझे सिर्फ इतना कहना है कि आपके आवेदन के कोड प्लगइन के कोड में कॉल कर सकते हैं, लेकिन नए सूत्र शुरू करने या एक डिस्क तक पहुंचने जैसी विशिष्ट काम करने से प्रतिबंधित करते हैं।

+0

धन्यवाद, यह खोज शुरू करने का एक अच्छा तरीका हो सकता है;) –

+2

ठीक है, मुझे कोई उपयोगी उदाहरण नहीं मिला है। क्या आपके पास शायद मेरे लिए एक है? –

1

मुझे यकीन नहीं है कि मैं समझता हूं कि आप किस दिशा में यात्रा करने की अनुमति चाहते हैं। मान लीजिए कि आप "ऐप" को मुख्य एप्लिकेशन को बताने के लिए चाहते हैं कि (लगभग एंड्रॉइड ऐप सिग्नल फोन पर अनुमति कैसे देता है) की तरह आप IAccessRights इंटरफ़ेस को परिभाषित कर सकते हैं कि प्रत्येक मॉड्यूल उस स्तर के स्तर को लागू और परिभाषित करता है जो इसे चाहता है या परिभाषित करता है या हो सकता है।

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

तो यह इंटरफ़ेस के लिए और वस्तु के लिए लोड समय जांच में एक वर्ग को लागू करने और उसके अनुसार अनुमतियों समन्वय करने के लिए मॉड्यूल निर्भर है। यदि इसे दो तरीकों से होने की आवश्यकता है, तो एक पैटर्न तैयार करें जो मुख्य एप्लिकेशन को मॉड्यूल के अधिकार (अनुमति) सेट करने की अनुमति देता है।

साइड-नोट: इसके अलावा, मुझे सिस्टम कॉल (हुक और क्या नहीं) के बिना File.Delete जैसे प्रत्यक्ष कॉल को अस्वीकार करने का कोई तरीका नहीं दिख रहा है।

1

मुझे निश्चित रूप से यह सुनिश्चित नहीं है कि इसे कैसे कार्यान्वित किया जाए, लेकिन ऐसा लगता है कि इंटरफ़ेस आईपीरमिशन की आवश्यकता हो सकती है, मैं यहां SO पर एक और उत्तर ढूंढता हूं जो उपयोगी हो सकता है।

Implementing IPermission for custom code access security