2009-11-23 17 views
5

चूंकि Vista & विंडोज 7 में से कुछ मेरे .NET अनुप्रयोग ने सुरक्षा अपवाद फेंकना शुरू कर दिया है।व्यवस्थापक के रूप में .NET अनुप्रयोग चलाएं

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

मुझे पता है कि एक उपयोगकर्ता के रूप में मैं एप्लिकेशन को व्यवस्थापक के रूप में चलाने के लिए सेट कर सकता हूं लेकिन यह पर्याप्त नहीं है क्योंकि यदि एप्लिकेशन विशेषाधिकारों के बिना चलाएगा तो यह मेरे उपयोगकर्ता मशीनों पर क्रैश होगा।

क्या विंडोज़ (प्रोग्रामेटिक रूप से) को बताने का कोई तरीका है, मैं चाहता हूं कि एप्लिकेशन प्रशासनिक विशेषाधिकारों के साथ चल सके?

उत्तर

7

आपको एप्लिकेशन ऐप में व्यवस्थापक विशेषाधिकारों की आवश्यकता के रूप में अपने ऐप को चिह्नित करने की आवश्यकता है। Here's an article from MSDN Magazine जो प्रक्रिया को बताता है।

16

एक आवेदन प्रकट बनाएँ, requireAdminstrator को requestedExecutionLevel सेट:

उदाहरण (वी.एस. द्वारा उत्पन्न जब आप आवेदन प्रकट जोड़ने):

<?xml version="1.0" encoding="utf-8"?> 
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> 
    <security> 
     <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> 
     <!-- UAC Manifest Options 
      If you want to change the Windows User Account Control level replace the 
      requestedExecutionLevel node with one of the following. 

     <requestedExecutionLevel level="asInvoker" uiAccess="false" /> 
     <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 
     <requestedExecutionLevel level="highestAvailable" uiAccess="false" /> 

      If you want to utilize File and Registry Virtualization for backward 
      compatibility then delete the requestedExecutionLevel node. 
     --> 
     <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 
     </requestedPrivileges> 
    </security> 
    </trustInfo> 
</asmv1:assembly> 

आप एक दृश्य स्टूडियो आवेदन परियोजना को यह जोड़ेंगे, तो वह संकलित करते समय आपकी असेंबली में एम्बेड किया जाएगा।

1

आपको अपने एप्लिकेशन में एक एप्लिकेशन मैनिफेस्ट जोड़ना चाहिए, और इसे व्यवस्थापकीय विशेषाधिकारों के अनुरोध के लिए कॉन्फ़िगर करना चाहिए। यहां देखें: http://www.professionalvisualstudio.com/blog/2007/10/05/enabling-your-application-for-uac-on-vista/

1

आवेदन शुरू करने पर उपयोगकर्ता अधिकारों को पंप करने का एक और समाधान यहां वर्णित है: Pimp my UAC and a few questions about it

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