2009-06-24 13 views
5

मेरे पास यूएसी विकास मार्गदर्शिकाएं "प्रशासनिक विकल्प आवेदन" के रूप में संदर्भित हैं। यदि आप इस बात से परिचित हैं कि यह अगले खंड में क्या है।व्यवस्थापक को प्रमाण पत्र के लिए उपयोगकर्ता को संकेत देकर मैं एक फ़ाइल को Vista में "मानक उपयोगकर्ता" के रूप में कैसे कॉपी कर सकता हूं (यानी "एक प्रशासनिक विकल्प आवेदन")?

पृष्ठभूमि:

मैं "स्टैंडर्ड" उपयोगकर्ता जाने के लिए चाहते हैं का चयन/अपने आवेदन के लिए वरीयताओं में एक रन स्टार्टअप विकल्प पर चयन रद्द करने की क्षमता है।

चूंकि मेरा आवेदन प्रति मशीन (प्रति उपयोगकर्ता नहीं) है, इसलिए क्या होने की आवश्यकता है या तो इसे स्टार्ट मेनू/प्रोग्राम/स्टार्टअप फ़ोल्डर में शॉर्टकट फ़ाइल को हटाने या कॉपी करने की आवश्यकता होगी जिसके लिए इस ऑपरेशन को करने के लिए व्यवस्थापकीय पहुंच की आवश्यकता होगी ।

तो, मुझे "उपयोगकर्ता खाता नियंत्रण क्रेडेंशियल प्रॉम्प्ट" दिखाई देने के लिए क्या चाहिए और इस तरह यदि उपयोगकर्ता के पास एक व्यवस्थापक खाता भी है तो वे प्रमाण-पत्र भी डाल सकते हैं। यह जाहिर है कि उपयोगकर्ताओं को प्रत्येक प्रशासन को कुछ करने की आवश्यकता होने पर उपयोगकर्ता को किसी अन्य खाते में स्विच करने से रोकने के लिए डिज़ाइन किया जाना चाहिए। MSDN प्रलेखीकरण से

अंश:

कोई प्रशासनिक च्वाइस आवेदन

एक ऊंचा प्रक्रिया या COM ऑब्जेक्ट

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

  • एप्लिकेशन प्रशासनिक कार्य करने के लिए ShellExecute() का उपयोग करके दूसरा प्रोग्राम लॉन्च करता है। यह दूसरा प्रोग्राम अनुरोधकर्ता निष्पादन के साथ चिह्नित किया जाएगा, प्रशासक की आवश्यकता है, इस प्रकार उपयोगकर्ता को अनुमोदन के लिए संकेत दिया जा सकता है। यह दूसरा प्रोग्राम एक पूर्ण प्रशासनिक पहुंच टोकन के साथ चल रहा है और वांछित कार्य करने में सक्षम होगा। -OR-
  • एप्लिकेशन CreateElevatedComObject() का उपयोग कर COM COM लॉन्च करता है। यह एपीआई निम्नलिखित ऑब्जेक्ट के बाद पूर्ण ऑब्जेक्ट एक्सेस टोकन के साथ COM ऑब्जेक्ट लॉन्च करेगा और यह COM ऑब्जेक्ट वांछित कार्य करने में सक्षम होगा।

मैं सिर्फ एक फाइल कॉपी करने की जरूरत है ... एक नई प्रक्रिया का उपयोग कर ShellExecute() कांटा करने के लिए जरूरत से ज्यादा लगता है और मैं पर्याप्त जानकारी नहीं है के बारे में कॉम अगर मैं इसका इस्तेमाल एक फ़ाइल की प्रतिलिपि करने सकता है पता करने के लिए। मुझे आशा है कि कोई व्यक्ति कुछ कोड पोस्ट कर सकता है जो फ़ाइल की प्रतिलिपि बनाने का एक तरीका प्रदान करता है और आदर्श रूप से यह भी बताता है कि "शील्ड सजावट" के साथ मेनूइटम को कैसे सजाने के लिए।

नोट्स:

मैं UAC Demo provided by microsoft जो कई StackOverflow अनुमतियों से संबंधित विषयों पर जैसे (Request Windows Vista UAC elevation if path is protected?) पदों में संदर्भित है पर ध्यान दिया है। कोड में केवल एक अलग प्रक्रिया को कॉल करने का एक उदाहरण है।

उत्तर

2

मैं एक अलग दिशा में जा रहा समाप्त हो गया।मैंने अपने इंस्टॉलर को सभी उपयोगकर्ता/स्टार्टअप फ़ोल्डर में एक स्टार्टअप शॉर्टकट बनाया था जो एप्लिकेशन "स्टार्टअप" के लिए एक तर्क पास करता है।

जब एप्लिकेशन शुरू हुआ तो मैं तर्क [0] .equals ("स्टार्टअप") के अस्तित्व की जांच करता हूं और फिर सेटिंग 1.Default.RunOnStartup == सत्य की जांच करता हूं।

यदि दोनों स्थितियां सत्य थीं तो मैं तुरंत आवेदन से बाहर निकल जाऊंगा। जब उस तर्क के बिना एप्लिकेशन शुरू किया जाता है (यानी स्टार्ट मेनू प्रोग्राम समूह), तो एप्लिकेशन सामान्य रूप से लोड होता है।

रनऑनस्टार्टअप सेटिंग एक उपयोगकर्ता स्कोप्ड सेटिंग है ताकि प्रत्येक उपयोगकर्ता दूसरों को प्रभावित किए बिना बदल सके।

2

हालांकि यह अभी भी कम से कम को पुन: प्रारंभ या एक प्रक्रिया को उत्पन्न करने के शामिल करने के लिए प्रकट होता है, आप कुछ मदद यहाँ पा सकते हैं: UAC Shield for Elevation CodeProject.com

पर
+0

यह एक शुरुआत है। धन्यवाद! – blak3r