के साथ एक COM घटक को कैसे बढ़ाएं CoCreateInstanceAsAdmin
पर कॉल करके सी ++ में लिखी गई COM ऑब्जेक्ट को ऊपर उठाने के तरीके पर मुझे article मिला है। लेकिन जो मैं खोजने या करने में सक्षम नहीं हूं, वह मेरे .NET (C#) अनुप्रयोग के घटक को COM ऑब्जेक्ट के रूप में कार्यान्वित करने का एक तरीका है और उसके बाद उन ऑब्जेक्ट्स को कॉल करें जिन्हें यूएसी ऊंचाई की आवश्यकता होती है। एमएसडीएन इसे admin COM object model के रूप में दस्तावेज करता है।यूएसी
मुझे पता है कि एक अलग प्रक्रिया में कार्यों को निष्पादित करने के लिए एप्लिकेशन (या अन्य ऐप) को व्यवस्थापक के रूप में लॉन्च करना संभव और आसान है (उदाहरण के लिए post from Daniel Moth देखें, लेकिन जो मैं ढूंढ रहा हूं वह है एक ही, गैर-उन्नत .NET निष्पादन योग्य से सबकुछ करने का तरीका। ऐसा करने से, एक नई प्रक्रिया में COM ऑब्जेक्ट को जन्म दिया जाएगा, लेकिन पारदर्शी मार्शलिंग के लिए धन्यवाद, .NET COM ऑब्जेक्ट का कॉलर नहीं होना चाहिए (बहुत अधिक) इसके बारे में पता है।
CoCreateInstanceAsAdmin
एपीआई के माध्यम से सी # प्रोजेक्ट से सी # में लिखी गई COM ऑब्जेक्ट को कैसे उत्पन्न किया जा सकता है, इस बारे में कोई भी विचार बहुत उपयोगी होगा। इसलिए मुझे वास्तव में लिखने में सीखने में दिलचस्पी है सी # में एक COM ऑब्जेक्ट, जिसे मैं COM के माध्यम से सी # से आवेक कर सकता हूं ऊंचाई एपीआई।
कोई बात नहीं है कि उन्नत COM ऑब्जेक्ट एक ही प्रक्रिया में नहीं चलता है। मैं सिर्फ पूरे आवेदन को लॉन्च नहीं करना चाहता हूं; मैं सिर्फ COM ऑब्जेक्ट रखना चाहता हूं जो कोड को ऊपर उठाएगा। मैं पंक्तियों के साथ कुछ लिखते हैं तो हो सकता है:
// in a dedicated assembly, marked with the following attributes:
[assembly: ComVisible (true)]
[assembly: Guid ("....")]
public class ElevatedClass
{
public void X() { /* do something */ }
}
और फिर बस instanciate ElevatedClass
CoCreateInstanceAsAdmin
कॉल के माध्यम से अपने मुख्य आवेदन किया है। लेकिन शायद मैं सिर्फ सपना देख रहा हूँ।
आपकी फीड-बैक के लिए धन्यवाद; एक अलग होस्टिंग प्रक्रिया चलाना मेरा इरादा नहीं है। मैं वास्तव में ऊंचा COM घटक के साथ बातचीत करने में सक्षम होना चाहूंगा जैसे कि यह एक स्थानीय वस्तु थी (यानी ऊंचा COM घटक अन्य स्थानीय .NET ऑब्जेक्ट्स में वापस कॉल करने में सक्षम होना चाहिए)। –