仅在必要时提升权限

3
我的应用程序只偶尔需要提升权限...我需要引用一些第三方COM组件,这些组件只有在以管理员身份运行时才能正常工作。
我希望我的应用程序只在需要时请求提升权限...通常情况下,我不希望我的应用程序以管理员身份运行,除非我需要使用第三方COM组件。
我发现CoCreateAsAdmin可能会解决问题,但组件作者没有设置所需的注册表项,而且我不知道如何在C#中使用CoCreateAsAdmin并与由tlbimp创建的Runtime-Callable-Wrapper一起使用。
另一种解决方法是生成另一个进程,但我还没有经验...我不想创建完全独立的应用程序...如果有人可以向我展示如何使其工作,我很乐意创建在分离的提升进程中运行的程序集。
谢谢...
1个回答

3
进程权限是基于进程运行时分配的用户令牌。因此,一旦进程启动,就没有任何方法可以提升进程权限。在运行时提升权限的唯一可靠方法是生成一个新进程。
幸运的是,这很容易。使用Process对象执行命令行以注册和启动COM服务器。确保你运行的.exe应用程序清单标记为需要提升权限,用户将在运行之前自动提示。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接