2008-09-17 9 views
5

मैं यह पता लगाने की कोशिश कर रहा हूं कि किसी एप्लिकेशन के भीतर कोई विशिष्ट फ़ंक्शन बढ़ाने का कोई तरीका है या नहीं। उदाहरण के लिए, मेरे पास रजिस्ट्री में संग्रहीत सिस्टम और उपयोगकर्ता सेटिंग्स के साथ एक ऐप है, सिस्टम सिस्टम सेटिंग्स को बदलने की आवश्यकता होने पर मुझे केवल ऊंचाई की आवश्यकता है।Vista यूएसी, एक्सेस ऊंचाई और .NET

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

उत्तर

2

आपको वास्तव में क्या करना है एप्लिकेशन सेटिंग्स फ़ोल्डर को अपनी सेटिंग्स स्टोर करना है।

3

मिले एक nice article that covers this here:

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

लग रहा है लेख की तरह सी का उपयोग कर ++ के बारे में बात कर रही है, इसलिए मैं another article पाया को शामिल किया गया है कि कैसे इस कोड को पी/आह्वान का उपयोग कर कॉल करने के लिए। तो .NET से करने योग्य होना चाहिए।

+0

संदर्भित लिंक अब काम नहीं करता है। तो आप किसी और के बारे में जानते हैं? – cjbarth

7

सबसे अच्छा लेख मैंने देखा है यह एक है:

http://www.codeproject.com/KB/vista-security/UAC__The_Definitive_Guide.aspx

यह वास्ते करने के लिए नीचे बताते हैं के दृश्यों जब मौजूदा माइक्रोसॉफ्ट अनुप्रयोगों शीघ्र यूएसी परवरिश कर रहे हैं के पीछे चल रहा है, और एक क्या यह कैसे अपने आप को ऐसा करने के लिए, या कम से कम तुम क्या खिलाफ अपने ऊपर यह काम करने के लिए पता चल जाएगा की बिट ...

(उदाहरण वह पता चलता प्रबंधित कर रहे हैं ग ध्यान दें ++)

+0

यह वास्तव में एक अद्भुत लेख है। क्या किसी के पास नेट कोड (सी # या वीबी.Net) में इसे कार्यान्वित करने के बारे में कोई संदर्भ है? – cjbarth

11

यह सिर्फ एक तरक्की करना असंभव है फू नक्शन या एकल प्रक्रिया का कोई अन्य भाग, क्योंकि ऊंचाई स्तर एक प्रति-प्रक्रिया विशेषता है। गर्भावस्था के साथ ही, आपकी प्रक्रिया को या तो बढ़ाया जा सकता है या नहीं। यदि आपको ऊंचा चलने के लिए अपने कोड के कुछ हिस्से की आवश्यकता है, तो आपको एक अलग प्रक्रिया शुरू करनी होगी।

HRESULT 
CreateElevatedComObject (HWND hwnd, REFGUID guid, REFIID iid, void **ppv) 
{ 
    WCHAR monikerName[1024]; 
    WCHAR clsid[1024]; 
    BIND_OPTS3 bo; 

    StringFromGUID2 (guid, clsid, sizeof (clsid)/2); 

    swprintf_s (monikerName, sizeof (monikerName)/2, L"Elevation:Administrator!new:%s", clsid); 

    memset (&bo, 0, sizeof (bo)); 
    bo.cbStruct = sizeof (bo); 
    bo.hwnd = hwnd; 
    bo.dwClassContext = CLSCTX_LOCAL_SERVER; 

    // Prevent the GUI from being half-rendered when the UAC prompt "freezes" it 
    MSG paintMsg; 
    int MsgCounter = 5000; // Avoid endless processing of paint messages 
    while (PeekMessage (&paintMsg, hwnd, 0, 0, PM_REMOVE | PM_QS_PAINT) != 0 && --MsgCounter > 0) 
    { 
     DispatchMessage (&paintMsg); 
    } 

    return CoGetObject (monikerName, &bo, iid, ppv); 
} 
3

विंडोज एसडीके "क्रॉस प्रौद्योगिकी नमूने" है:

हालांकि, अगर आप एक COM ऑब्जेक्ट के रूप में अपने कार्य को लागू कर सकते हैं, आप इसे परोक्ष रूप से उठाया, एक ऊंचा COM वस्तु बनाने, इस तरह से चला सकते हैं एक "यूएसीडीमो" एप्लिकेशन जो सी # विंडोज फॉर्म एप्लिकेशन के उदाहरण दिखाता है जो एक कार्य करने के लिए एक प्रशासक प्रक्रिया शुरू करता है जिसके लिए ऊंचाई की आवश्यकता होती है (यानि %programfiles% पर लिखना)।

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

+1

ऊपर उल्लिखित नमूने का लिंक यहां दिया गया है: [http://msdn.microsoft.com/en-us/library/aa970890(v=vs.90).aspx](http://msdn.microsoft.com/ en-us/पुस्तकालय/aa970890 (v = vs.90) .aspx) – cjbarth

0

मुझे लगता है कि Aydsman यहां सही रास्ते पर है। नामित पाइप्स को .NET 3.5 के समर्थन के साथ, आपके पास एक उन्नत बाल प्रक्रिया के साथ संवाद करने के लिए एक सभ्य आईपीसी तंत्र है।