Как UAC повысить компонент COM с помощью .NET

мы нашлистатья о том, как поднять COM-объект, написанный на C ++, вызываяCoCreateInstanceAsAdmin, Но то, что я не смог найти или сделать, - это способ реализовать компонент моего приложения .NET (c #) в виде COM-объекта, а затем вызвать этот объект для выполнения задач, требующих повышения UAC. MSDN документирует это какАдминистративная COM объектная модель.

Я знаю, что можно и довольно легко запустить приложение (или другое приложение) в качестве администратора, чтобы выполнить задачи в отдельном процессе (см., Например,сообщение от Daniel Moth, но я ищу способ сделать все из одного и того же невыполненного исполняемого файла .NET. Это, конечно, вызовет COM-объект в новом процессе, но благодаря прозрачному маршаллингу вызывающий .NET COM-объект не должен (слишком сильно) осознавать это.

Любые идеи относительно того, как я мог бы создать COM-объект, написанный на C #, из проекта C #, черезCoCreateInstanceAsAdmin API будет очень полезным. Так что мне действительно интересно узнать, как написать COM-объект в C #, который я затем могу вызывать из C # через API повышения 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 */ }
}

и тогда мое основное приложение просто инстанцируетElevatedClass сквозьCoCreateInstanceAsAdmin вызов. Но, может быть, я просто мечтаю.

Ответы на вопрос(3)

Ваш ответ на вопрос