2008-09-29 8 views
31

मेरा .NET अनुप्रयोग किसी नेटवर्क ड्राइव से चलने पर विफल रहता है, भले ही एक ही निष्पादन योग्य स्थानीय हार्ड ड्राइव से पूरी तरह से ठीक हो जाए?नेटवर्क ड्राइव से चलाने पर मेरा .NET अनुप्रयोग क्रैश क्यों होता है?

मैं बहुत तरह के लिए "पूर्ण विश्वास" जाँच की कोशिश की:

try 
{ 
    // Demand full trust permissions 
    PermissionSet fullTrust = new PermissionSet(PermissionState.Unrestricted); 
    fullTrust.Demand(); 

    // Perform normal application logic 

} 
catch(SecurityException) 
{ 
    // Report that permissions were not full trust 
    MessageBox.Show("This application requires full-trust security permissions to execute."); 
} 

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

+0

जब आप कहते हैं कि यह "विफल रहता है", कैसे वास्तव में यह असफल है? क्या त्रुटियां हैं? – TheSoftwareJedi

+0

क्या आपके द्वारा लिखे गए कोड कैच में जाते हैं? –

+0

को आज भी यही समस्या मिली है और अभी तक कोई समाधान नहीं मिला है, यह प्रश्न देखेगा ... – Epaga

उत्तर

22

यह वास्तव में इस तथ्य से है कि किसी नेटवर्क स्थान पर ऐप्स आपके स्थानीय एचडी (.NET ढांचे की डिफ़ॉल्ट नीति के कारण) पर कम भरोसेमंद हैं।

यदि मुझे गलत नहीं लगता है तो माइक्रोसॉफ्ट ने अंततः .NET 3.5 SP1 (कई डेवलपर्स शिकायत करने के बाद) में इस परेशानी को सही किया है।

मैं इसे google'd: .NET Framework 3.5 SP1 Allows managed code to be launched from a network share!

+0

प्रभावित उपयोगकर्ताओं को सर्विस पैक डाउनलोड करके सत्यापित किया गया , और सब अच्छा है। धन्यवाद! –

+0

बढ़िया! मुझे अपने कुछ ग्राहकों के लिए बनाई गई उपयोगिता के साथ पहले कैसपोल का उपयोग करना पड़ा। यह एक दर्द है जो एक स्क्रिप्ट बनाने के लिए है और इसे आपके उपयोगिता से पहले चलाया जाता है, सिर्फ इसलिए कि यह किसी नेटवर्क स्थान से चलाया जाता है। –

+6

अद्यतन: .NET 3.5 SP1 में तय की गई समस्या तब दिखाई दे रही है जब .NET 4.0 रनटाइम स्थापित होता है। –

14

क्या आपने CasPol to Fully Trust a Share का उपयोग करने का प्रयास किया था?

+0

लगभग अपवित्र-योग्य, लेकिन यह समस्या को समझाए बिना समाधान प्रदान करता है। –

3

यदि यह .NET 2.0 या अधिक है, तो ClickOnce वास्तव में इस परिनियोजन सामग्री के साथ मदद करने के लिए बनाया गया था। मैं केवल इसका उपयोग कर नेटवर्क शेयरों पर तैनात हूं।

0

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

आपको जो करना है वह विशिष्ट असेंबली के विश्वास को बढ़ाता है। आप इसे .NET Framework कॉन्फ़िगरेशन (नियंत्रण कक्ष-> व्यवस्थापकीय उपकरण) में करते हैं, और प्रत्येक कंप्यूटर पर किया जाना है।

किसी भी सुरक्षा उपायों के साथ के रूप में, यह एक दर्द-इन-द-गधा है, लेकिन दुनिया में मदद मिलेगी कम संक्रमित आदि होने के लिए ...

+0

लेकिन उसका संदेश बॉक्स क्यों दिखाई नहीं देता है? – Epaga

+2

... मैलवेयर को रोक रहा है ... आपने कितने मैलवेयर लिखे हैं।नेट? कोई भी गैर .NET निष्पादन योग्य पूर्ण विशेषाधिकार (डिफ़ॉल्ट रूप से) का उपयोग कर नेटवर्क से चलाने में सक्षम हो जाएगा। केवल अंतर यह है कि विंडोज़ ने डिफ़ॉल्ट रूप से .NET को डिफ़ॉल्ट रूप से अनुमति नहीं दी थी। –

+3

अच्छी तरह से, Win32 बाइनरी को निष्पादित करने की अनुमति देते हुए प्रबंधित कोड को अवरुद्ध करना एक सुरक्षा उपाय नहीं है ... – user19871

11

आप पहले से ही यह किया है, लेकिन आप Caspol उपयोग कर सकते हैं। एक निर्दिष्ट नेटवर्क शेयर के लिए FullTrust सक्षम करने के लिए exe।

उदाहरण

cd c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 
CasPol.exe -m -ag 1.2 -url file:///N:/your/network/path/* FullTrust 

अधिक जानकारी here लिए

+0

बहुत अच्छा जवाब, मेरे लिए काम किया! – davidhq

+0

आलसी देव संस्करण: 'सी: \ विंडोज \ माइक्रोसॉफ्ट.NET \ Framework \ v4.0.30319> CasPol.exe -m -ag 1.2 -zone इंट्रानेट फुलट्रस्ट' – mhvelplund

0

सभी मैं करना पड़ा निशान फ़ाइलें केवल (संभवतः असंबंधित) पढ़ें और प्रमाणीकृत उपयोगकर्ताओं के लिए पूरा नियंत्रण को छोड़कर सभी अनुमतियां दे रहा था। मैंने ऐसा करने से पहले इस मुद्दे का सामना कर रहा था, जब मेरे पास नेटवर्क उपयोगकर्ताओं के लिए केवल नेटवर्क शेयर था।

मैंने इस कामकाज की खोज की क्योंकि न तो व्यवस्थापक शेयर (\ सर्वर \ सी $) और न ही मेरे अपने पीसी के शेयरों में यह समस्या थी।

संपादित करें: अनुप्रयोग .NET 3.5 लक्षित कर रहा है, कोई SP1 यहाँ (संस्करण 3.5.7283)