कार्यक्रम शुरू होने पर प्रशासक की अनुमति का अनुरोध कैसे करें?


81

मुझे Windows Vista पर व्यवस्थापक के रूप में चलाने में सक्षम होने के लिए मेरे सॉफ़्टवेयर की आवश्यकता है (यदि कोई इसे बिना प्रशासनिक अनुमति के चलाता है, तो यह दुर्घटनाग्रस्त हो जाएगा)।

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

Windows Vista पर c # ऐप चलाते समय मैं प्रशासनिक विशेषाधिकारों का अनुरोध कैसे करूं?


6
कृपया यह मत भूलो कि ऐसा करने से केवल अंतर्निहित समस्या छिपती है, यह इसे ठीक नहीं करता है। यहां तक ​​कि अगर आपके कार्यक्रम को वास्तव में व्यवस्थापक अनुमति की आवश्यकता है, तो यह दुर्घटना नहीं होनी चाहिए अगर यह उन्हें नहीं मिलती है। सबसे संभावित कारण यह है कि आप सिस्टम कॉल के बाद त्रुटि स्थिति की जांच करने में विफल हो रहे हैं।
हैरी जॉनसन

जवाबों:


143

अपनी मेनिफ़ेस्ट फ़ाइल में निम्न जोड़ें:

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

आप highestAvailableस्तर के लिए भी उपयोग कर सकते हैं ।

प्रकट फ़ाइलों को एम्बेड करने के बारे में यहां देखें:

http://msdn.microsoft.com/en-us/library/bb756929.aspx

PS: यदि आपके पास एक मैनिफ़ेस्ट फ़ाइल नहीं है, तो आप आसानी से एक नया जोड़ सकते हैं:

विज़ुअल स्टूडियो में, राइट क्लिक प्रोजेक्ट -> आइटम जोड़ें -> एप्लिकेशन मेनिफेस्ट फ़ाइल चुनें (विज़ुअल सी # आइटम के लिए सामान्य)

जोड़ा फ़ाइल पहले से ही ऊपर हिस्सा होगा, बस के स्तर को बदलने requireAdministratorसेasInvoker


2
वर्थ उल्लेख है कि यदि आप वीएस में एक एप्लिकेशन मेनिफेस्ट फ़ाइल जोड़ते हैं, तो आपको कई अन्य विकल्पों के साथ एक टेम्पलेट मिलता है (जैसे, यह कहना कि आपका ऐप केवल विंडोज 10 और ऊपर की तरफ काम करता है।) वीएस2017 पर परीक्षण किया गया।
प्रति लंडबर्ग

@PerLundberg - उल्लेख के लायक नहीं है, क्योंकि मूल आस्क-एर ने इस बारे में नहीं पूछा था - उन्होंने प्रशासक अनुमतियों के बारे में पूछा
Momoro

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

मैं कुछ भी असभ्य नहीं कर रहा था (क्षमा करें, अगर मैं इस तरह से आया था) मैं सिर्फ पुराने उत्तरों / प्रश्नों पर पढ़ रहा था, और उलझन में था: D
Momoro

14

इस XML को yourexename.exe.manifest नामक फ़ाइल में रखें:

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
   <security>
     <requestedPrivileges>
        <requestedExecutionLevel level="highestAvailable" />
     </requestedPrivileges>
   </security>
</trustInfo>
</assembly>


-1

एफ # विज़ुअल स्टूडियो 2013 के लिए, एफएसआरपी कंपाइलर के /win32manifestझंडे का उपयोग करते हुए प्रशासक उत्थान का अनुरोध करने वाली एक मैनिफ़ेस्ट फ़ाइल मेरे साथ काम करता है। इसलिए, "App.Exe" नामक एक प्रोजेक्ट आउटपुट दिया गया

  1. (सुविधा के लिए आप परियोजना के लिए फ़ाइल जोड़ सकते हैं निम्नलिखित सामग्री के साथ एक फ़ाइल बनाएँ। सुनिश्चित करें कि यह Build Actionहै None' andकी प्रतिलिपि आउटपुट के लिए ... isDo कॉपी नहीं . By convention such a file is named App.Exe.manifest`। आप uiAccess (यूज़र इंटरफ़ेस) की आवश्यकता है, विधानसभा दृढ़ता से नाम होना चाहिए।

    <?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="App" />
      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
        <security>
          <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
            <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
          </requestedPrivileges>
        </security>
      </trustInfo>
    </asmv1:assembly>
    
  2. Other flags:निम्नलिखित को शामिल करने के लिए प्रोजेक्ट डायलॉग बिल्ड पैनल के एंट्री फ़ील्ड को संपादित करें /win32manifest:<ApplicationManifestFile>:। उदाहरण के लिए, इस मामले में, /win32manifest:App.Exe.manifest

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.