Tag: 名字

如何使用.NET升级COM组件

我发现了一篇关于如何通过调用CoCreateInstanceAsAdmin来提升用C ++编写的COM对象的文章 。 但是我无法找到或做的是将.NET(c#)应用程序的一个组件实现为COM对象,然后调用该对象来执行需要UAC提升的任务。 MSDN将此文档记录为管理COM对象模型 。 我知道以管理员身份启动应用程序(或其他应用程序)是可能的,并且很容易在单独的过程中执行任务(例如参见Daniel Moth的post ,但我正在寻找的是一种方式从同一个未提升的.NET可执行文件中做所有事情。当然,这样做会在新进程中生成COM对象,但是由于透明的编组,.NET COM对象的调用者不应该(也是很多)意识到这一点。 关于如何使用C#项目,通过CoCreateInstanceAsAdmin API实现用C#编写的COM对象的任何想法都会非常有用。 所以我真的很想学习如何在C#中编写COM对象,然后我可以通过COM高程API从C#调用它。 不要紧,boost的COM对象是否在同一进程中运行。 我只是不想让整个应用程序升级; 我只想提升将执行代码的COM对象。 如果我能写出一些东西: // in a dedicated assembly, marked with the following attributes: [assembly: ComVisible (true)] [assembly: Guid (“….”)] public class ElevatedClass { public void X() { /* do something */ } } 然后让我的主应用程序通过CoCreateInstanceAsAdmin调用实例化ElevatedClass 。 但也许我只是在做梦。