Jak UAC podnieść składnik COM za pomocą .NET

Znalazłemartykuł o tym, jak podnieść obiekt COM napisany w C ++CoCreateInstanceAsAdmin. Ale tego, czego nie udało mi się znaleźć ani zrobić, to sposób na zaimplementowanie komponentu mojej aplikacji .NET (c #) jako obiektu COM, a następnie wywołanie tego obiektu w celu wykonania zadań wymagających podniesienia UAC. MSDN dokumentuje to jakoadmin model obiektu COM.

Zdaję sobie sprawę, że uruchomienie aplikacji (lub innej aplikacji) jako administratora jest możliwe i całkiem łatwe, aby wykonać zadania w oddzielnym procesie (patrz na przykładpost od Daniela Motha, ale to, czego szukam, to sposób na zrobienie wszystkiego z tego samego, nie podniesionego pliku wykonywalnego .NET. Spowoduje to oczywiście zrobienie obiektu COM w nowym procesie, ale dzięki przejrzystemu marshallingowi obiekt wywołujący .NET COM nie powinien (zbyt) być tego świadomy.

Wszelkie pomysły, w jaki sposób mogę zainicjować obiekt COM napisany w C #, z projektu C #, poprzezCoCreateInstanceAsAdmin API byłoby bardzo pomocne. Tak więc jestem bardzo zainteresowany nauką pisania obiektu COM w C #, który mogę następnie wywołać z C # za pośrednictwem interfejsów API podniesienia COM.

Nieważne, czy podniesiony obiekt COM nie działa w tym samym procesie. Po prostu nie chcę uruchamiać całej aplikacji; Chciałbym tylko podwyższyć poziom obiektu COM, który wykona kod. Gdybym mógł napisać coś na wzór:

// in a dedicated assembly, marked with the following attributes:
[assembly: ComVisible (true)]
[assembly: Guid ("....")]

public class ElevatedClass
{
    public void X() { /* do something */ }
}

a następnie mieć moją główną aplikację tylko instanciateElevatedClass przezCoCreateInstanceAsAdmin połączenie. Ale może po prostu śnię.

questionAnswers(3)

yourAnswerToTheQuestion