【问题标题】:Privilege Elevation only when and if required仅在需要时才可提升特权
【发布时间】:2010-06-17 18:18:00
【问题描述】:

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

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

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

另一种解决方案是生成另一个进程,但我还没有这方面的经验......我不想创建一个完全独立的应用程序......我很乐意创建一个在分离的程序中运行的程序集如果有人可以向我展示如何使其工作,则提升流程。

谢谢...

【问题讨论】:

    标签: c# uac


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      【讨论】:

      • 这很有帮助,但没有提供我想要做什么的示例。如果我创建一个单独的进程来运行特权操作,是否有一种简单的方法可以让它与作为标准用户运行的进程进行通信?
      猜你喜欢
      • 2010-10-09
      • 2017-01-06
      • 2021-06-06
      • 2014-02-28
      • 1970-01-01
      • 2017-07-20
      • 2016-01-10
      • 2013-08-30
      • 1970-01-01
      相关资源
      最近更新 更多