2011-04-30 18 views
7

कोई विचार मैं सी # का उपयोग करके निम्नलिखित कैसे कर सकता हूं?इंटरनेट एक्सप्लोरर सेटिंग्स प्रोग्रामेटिक रूप से बदलें?

  1. Tools -> Internet Options -> Security
  2. के लिए जा रहे Security टैब
  3. का चयन करें Enable
+2

आपका मतलब है, एक भरोसेमंद, स्थानीय रूप से स्थापित C# ऐप के भीतर से जिसमें व्यवस्थापकीय अधिकार हैं? –

+1

हां। भरोसेमंद स्थानीय ऐप व्यवस्थापक विशेषाधिकारों – kakopappa

+3

के साथ चल रहा है और, ज़ाहिर है, यह एक "अस्थायी परिवर्तन" होगा ... जो इसके उद्देश्य के बाद पूरी तरह से पूर्ववत है? मैं उपयोगकर्ताओं की जानकारी के बिना उपयोगकर्ता ब्राउज़र सेटिंग्स, विशेष रूप से सुरक्षा संवेदनशील लोगों को "समायोजित" नहीं करूँगा। – corlettk

उत्तर

11

"धोखा" तरीका यह है मूल्य

HKEY_CURRENT_USER \ Software \ Microsoft \ विंडोज बदलने के लिए है \ CurrentVersion \ Internet सेटिंग्स \ क्षेत्र \ 0 \ 1609 HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ इंटरनेट सेटिंग्स \ क्षेत्र \ 1 \ 1609 HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ इंटरनेट सेटिंग्स \ क्षेत्र \ 2 \ 1609 HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ इंटरनेट सेटिंग्स \ ज़ोन \ 3 \ 160 9 HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ इंटरनेट सेटिंग्स \ क्षेत्र \ 4 \ 1609

कहाँ 0-4 जोन पहचानकर्ता और मूल्य की अनुमति दें करने के लिए 0 है, 1 के लिए प्रेरित करें, और ब्लॉक करने के लिए 3। ध्यान रखें कि यदि आपका कोड किसी की मशीन पर करता है लेकिन स्वयं, तो आपको मैलवेयर के रूप में अपना कोड अवरुद्ध होने की संभावना है।

ऐसा करने का "उचित" तरीका IINternetZoneManager बनाने के लिए एपीआई का उपयोग करना है और उन क्षेत्रों में URLACTION_HTML_MIXED_CONTENT के लिए सेटिंग्स को समायोजित करने के लिए SetZoneActionPolicy पर कॉल करना है जिन्हें आप समायोजित करना चाहते हैं।

+1

समस्याओं का कारण बन जाएगा सभी रजिस्ट्री मानों की एक सूची और प्रत्येक के लिए विवरण [यहां] (http://support.microsoft.com/kb/182569) पाया जा सकता है। यह भी ध्यान रखें कि प्रत्येक जोन एक अलग _security zone_ का प्रतिनिधित्व करता है। 'जोन 3'' इंटरनेट जोन 'है। – fbonetti

5

को Miscellaneous अनुभाग परिवर्तन Display mixed content में Custom Level बटन पर क्लिक करें

  • आप प्रोग्राम के रूप में यह कर "करने वाला नहीं कर रहे हैं "। यही कारण है कि इसके लिए एक एपीआई नहीं है। केवल उपयोगकर्ता ही अपनी सुरक्षा सेटिंग्स बदल सकते हैं, और वे अंतर्निहित इंटरफ़ेस का उपयोग करके ऐसा करते हैं जिसे आप पहले ही खोज चुके हैं।

    खराब आईई टीम अपने ब्राउज़र की सुरक्षा को कसने की कोशिश कर रहे ओवरटाइम पर काम कर रही है। वे इस तरह कुछ फेंकने वाले नहीं हैं जो सेकंड के मामले में उनके सभी प्रयासों को खत्म कर देगा।
    याद रखें कि एक बार यह विकल्प चुनने के बाद भी a confirmation dialog presented है। आप प्रोग्रामेटिक रूप से "क्लिक" करने का प्रस्ताव कैसे देते हैं? (हम्म, दूसरे विचार पर, मुझे मत बताओ। शायद यह अगला प्रश्न है जिसे आप पूछेंगे।)

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

    या बेहतर, अभी तक अपने ऐप को फिर से डिजाइन करें ताकि इसे सिस्टम-व्यापी आईई की सुरक्षा सेटिंग्स में संशोधन की आवश्यकता न हो। इसके लिए एक वैध मामला कल्पना करना मुश्किल है। एक बेहतर समाधान उपयोगकर्ता को आपकी साइट को "विश्वसनीय साइटों" में जोड़ने के लिए कह सकता है। याद रखें कि स्थानीय पृष्ठों में डिफ़ॉल्ट रूप से दूरस्थ पृष्ठों की तुलना में अलग-अलग सुरक्षा सेटिंग्स होती हैं।

  • -1

    मुझे यकीन नहीं है लेकिन मुझे लगता है कि आप इन सभी सेटिंग्स को "रजिस्ट्री" में पा सकते हैं। आपको उचित कुंजी पता लगाना होगा। और उन मानों को बदलने के लिए आपको उचित अधिकार रखने की आवश्यकता है। रजिस्ट्री .net कोड से पहुँचा जा सकता

    +0

    सेटिंग्स उप-कुंजी के अंतर्गत हैं - HKLM \ सॉफ़्टवेयर \ Microsoft \ Windows \ CurrentVersion \ Internet सेटिंग्स; – Ankur

    +0

    याद रखें कि रजिस्ट्री में संशोधन तत्काल प्रभावी नहीं होते हैं। रजिस्ट्री में सेटिंग्स आमतौर पर सिस्टम स्टार्टअप और कैश पर एक बार पढ़ी जाती हैं। सिस्टम सेटिंग्स को बदलने का यह सही तरीका नहीं है। –

    +0

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

    0

    समूह नीतियों को भी न भूलें। अधिकांश (यदि नहीं सभी) समूह नीतियों में आईई सेटिंग्स भी निर्दिष्ट की जा सकती हैं। Local group policy setting for IE security page vs Internet options security page के अनुसार समूह नीति सेटिंग्स उपयोगकर्ता परिभाषित सेटिंग्स को ओवरराइड करती है। तो, मेरे होम पीसी पर (डोमेन नियंत्रक के बिना काम करता है) मेरे पास स्थानीय समूह नीति संपादक या इंटरनेट विकल्प के माध्यम से आईई सेटिंग्स को परिभाषित करने का विकल्प है। उदाहरण के लिए, यदि मैं स्थानीय समूह नीति संपादक खोलने के लिए gpedit.msc चलाता हूं, तो कंप्यूटर कॉन्फ़िगरेशन \ विंडोज घटक \ इंटरनेट एक्सप्लोरर \ इंटरनेट नियंत्रण कक्ष \ सुरक्षा पृष्ठ \ इंटरनेट जोन "मिश्रित सामग्री प्रदर्शित करें" सेटिंग को "सक्षम" में बदलें, फिर चुनें ड्रॉप डाउन बॉक्स में "सक्षम करें" का चयन करें, लागू करें पर क्लिक करें, फिर आईई में इंटरनेट जोन के लिए सुरक्षा सेटिंग्स खोलें - मैं देखूंगा कि "मिश्रित सामग्री प्रदर्शित करें" को सक्षम करने के लिए बदल दिया गया है और चयन अक्षम है क्योंकि यह नीति द्वारा अतिरंजित है। समर्थित नीतियों की पूरी सूची के लिए WindowsServer2012andWindows8GroupPolicySettings.xlsx से http://www.microsoft.com/en-us/download/details.aspx?id=25250

    अब वापस प्रश्न प्रोग्राम सेटिंग में बदलाव करने के लिए डाउनलोड करें। एरिकलो ने IInternetZoneManager से SetZoneActionPolicy का उपयोग करके सही ढंग से सुझाव दिया। लेकिन इसे सी # से कॉल करने के लिए नमूने ढूंढना मुश्किल है। मैं अपने कोड में http://www.pinvoke.net/default.aspx/Interfaces.IInternetZoneManager को कॉपी और फिर कर समाप्त हो गया:

    //This will disable "Download signed ActiveX" (IE setting # 0x1001) for Internet Zone (zone #3) 
    IInternetZoneManager izm = Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid("7b8a2d95-0ac9-11d1-896c-00c04Fb6bfc4"))) as IInternetZoneManager; 
    IntPtr pPolicy = Marshal.AllocHGlobal(4); 
    Marshal.Copy(new int[] { 3 }, 0, pPolicy, 1);//3 means "Disable" 
    int result = izm.SetZoneActionPolicy((uint)UrlZone.Internet, (uint)0x1001, pPolicy, 4, (uint)UrlZoneReg.CurrentUserKey); 
    Marshal.ReleaseComObject(izm); 
    Marshal.FreeHGlobal(pPolicy); 
    

    मैं भी प्रोग्राम के रूप में समूह नीति को बदलने की कोशिश की। मैं https://bitbucket.org/MartinEden/local-policy और उसके बाद से पुस्तकालय का इस्तेमाल किया:

    //This will disable "Download signed ActiveX controls" computer policy for Internet Zone (zone #3) 
    const string keyPath = @"SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3"; 
    var gpo = new LocalPolicy.ComputerGroupPolicyObject(); 
    using (var machine = gpo.GetRootRegistryKey(LocalPolicy.GroupPolicySection.Machine)) 
    { 
        using (var terminalServicesKey = machine.CreateSubKey(keyPath)) 
        { 
         terminalServicesKey.SetValue("1001", 3, Microsoft.Win32.RegistryValueKind.DWord); 
        } 
    } 
    gpo.Save(); 
    

    सफलतापूर्वक IE 11 के साथ Win7 SP1 पर ऊपर कोड का परीक्षण मैं EricLaw से मूल सुझाव के लिए वापस जाने का फैसला किया के बाद: संशोधित HKEY_CURRENT_USER \ Software \ Microsoft \ विंडोज \ CurrentVersion \ इंटरनेट सेटिंग्स \ जोन्स \ * \ 1001 सीधे क्योंकि माइक्रोसॉफ्ट की सिफारिश है। देखें, उदाहरण के लिए How to strengthen the security settings for the Local Machine zone in Internet Explorer या Enhanced Browsing Security

    संबंधित मुद्दे