2010-11-03 4 views
8

में व्यवस्थापक अधिकार त्वरित पॉपअप मेरे पास मेरे एप्लिकेशन में एक फ़ंक्शन है जिसके लिए व्यवस्थापकीय अधिकारों की आवश्यकता होती है।सी # एप्लिकेशन

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

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

alt text

पुनश्च: मैं सही मैनिफ़ेस्ट फ़ाइल में संशोधन करने से व्यवस्थापक के साथ ऐप्लिकेशन को लॉन्च करने के बारे में पता है।

यह कार्य एक बड़े कार्यक्रम का हिस्सा है और इसे एक अलग कार्यक्रम में स्थानांतरित नहीं किया जा सकता है।

+0

आपको नए अधिकारों का लाभ उठाने में सक्षम होने के लिए आवेदन के लिए पूर्ण व्यवस्थापक पहुंच प्रदान करने के बाद आपको अपना आवेदन पुनरारंभ करना होगा। इसलिए @Rob ने सुझाव दिया है कि आप एक अलग ऐप का उपयोग करें। सबसे अच्छी सिफारिश जो मैं दे सकता हूं वह यह है कि जब आप वास्तव में इसकी आवश्यकता होती है तो आपका एप्लिकेशन प्रारंभ में लॉन्च होने पर पूर्ण पहुंच अधिकारों का अनुरोध करता है। –

+0

मैं आपके सुझाव की सराहना करता हूं लेकिन हमारे आवेदन को अतिथि उपयोगकर्ताओं द्वारा भी निष्पादित किया जा सकता है (जो एक आवश्यकता है) और केवल कभी-कभी हमें व्यवस्थापक अधिकारों की आवश्यकता होती है। – Raj

+0

@राज मुझे यकीन है कि यूएसी इस तरह काम नहीं करता है। शुभकामनाएँ :) –

उत्तर

4

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

उदाहरण के लिए:

MyProgram.exe - कोई प्रकट
MyProgramElevated.exe - एक प्रकट है कि इंगित करता है यह व्यवस्थापक अधिकार

की आवश्यकता है

के रूप में यह ऊपर उठाया जब MyProgram.exe जरूरतों कोई कार्रवाई करने के कार्यान्वित MyProgramElevated.exe , आदेश पंक्ति पैरामीटर गुजर रहा है जो दर्शाता है कि ऊंचा कार्य आवश्यक है।

+0

यह पहली बात थी जो मैं करना चाहता था लेकिन यह कार्य एक बड़े कार्यक्रम का हिस्सा है और इसे एक अलग कार्यक्रम में स्थानांतरित नहीं किया जा सकता है। – Raj

+1

@राज, जैसा कि मैंने सुझाव दिया है, मुझे करने के अलावा "पूर्ण" टोकन प्राप्त करने के किसी भी तरीके से मुझे अवगत नहीं है। मैंने आपके प्रश्न में कुछ और टैग जोड़े हैं उम्मीद है कि इसे और अधिक दृश्यमान बनाएं क्योंकि किसी और को एक समाधान पता हो सकता है जो मैं नहीं करता =) – Rob

+0

आपको बहुत धन्यवाद रॉब .. :) – Raj

5

आप आप "runas" क्रिया का उपयोग कर कार्यक्रम प्रकट बदले बिना व्यवस्थापक विशेषाधिकारों के साथ एक कार्यक्रम चला सकते हैं Windows API Code Pack

से StockIcons.Shield का उपयोग कर आइकन प्राप्त कर सकते हैं (आप भी इसका उपयोग कर सकते फिर से शुरू करने के लिए अपने व्यवस्थापक अधिकार के साथ कार्यक्रम):

Process.Start(new ProcessStartInfo() 
    { 
     Verb = "runas", 
     FileName = "Notepad.exe", 
    }); 

वहाँ एक COM एपीआई है कि आप एक गैर-व्यवस्थापक प्रक्रिया के अंदर व्यवस्थापक अधिकार के साथ एक COM वस्तु बना सकते हैं है, लेकिन मेरा मानना ​​है कि यह एक .net आवेदन से उपयोग करने के लिए बहुत मुश्किल है।

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