を呼び出して C++ で記述された COM オブジェクトを昇格させる方法
に関する記事を見つけましたCoCreateInstanceAsAdmin
。しかし、私が見つけたり実行したりできなかったのは、.NET (c#) アプリケーションのコンポーネントを COM オブジェクトとして実装し、そのオブジェクトを呼び出して UAC 昇格が必要なタスクを実行する方法です。MSDN では、これを管理 COM オブジェクト モデルとして文書化しています。
アプリケーション(または別のアプリ)を管理者として起動し、別のプロセスでタスクを実行することが可能であり、非常に簡単であることを認識しています(たとえば、Daniel Moth からの投稿を参照してください。しかし、私が探しているのは方法です昇格されていない同じ .NET 実行可能ファイル内からすべてを実行する. そうすることで、もちろん新しいプロセスで COM オブジェクトが生成されますが、透過的なマーシャリングのおかげで、.NET COM オブジェクトの呼び出し元は (あまりにもかなり)それを認識しています。
API を使用して、C# プロジェクトから C# で記述された COM オブジェクトをインスタンス化する方法についてのアイデアはCoCreateInstanceAsAdmin
非常に役立ちます。そのため、C# で COM オブジェクトを作成する方法を学びたいと思っています。COM オブジェクトは、COM 昇格 API を介して C# から呼び出すことができます。
昇格した 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
ます。でも、もしかしたら夢を見ているだけかもしれません。