仅在需要时提供权限提升

时间:2010-06-17 18:18:00

标签: c# uac

我的应用程序偶尔只需要提升权限...我需要引用一些仅在以管理员身份运行时才能正常工作的第三方COM组件。

我希望我的应用程序仅在需要时才请求权限提升...通常,我不希望我的应用程序以管理员身份运行,除非我需要使用第三方COM组件。

我看到CoCreateAsAdmin可以潜在解决问题,但组件作者没有设置所需的注册表项,我不知道如何在C#中使用CoCreateAsAdmin并与之结合使用由tlbimp创建的Runtime-Callable-Wrapper。

另一个解决方案是生成另一个进程,但我还没有这方面的经验......我不想创建一个完全独立的应用程序......我很乐意创建一个以分离方式运行的程序集如果有人能告诉我如何让它发挥作用,那么升级过程就会发生。

...谢谢

2 个答案:

答案 0 :(得分:3)

进程权限基于运行进程的用户令牌,该用户令牌仅在进程启动时分配。因此,在您的流程已经开始之后,没有任何方法可以提升您的流程。在运行时提升的唯一可靠方法是生成一个新进程。

幸运的是,这很容易。使用Process对象执行将注册并启动COM服务器的命令行。确保您正在运行的.exe的应用清单将其标记为需要提升,并且在用户运行之前会自动提示用户。

答案 1 :(得分:1)