代码之家  ›  专栏  ›  技术社区  ›  Dan Andreatta

为dll请求的执行级别

  •  5
  • Dan Andreatta  · 技术社区  · 15 年前

    我正在处理一个WinForms应用程序。在Vista/Win7中,有一小部分功能需要以管理员身份运行。我了解如何在清单中设置应用程序的requestedExecutionLevel。诀窍是,我不想要求用户以管理员的身份运行整个应用程序,只是其中的一部分。所以我想让大部分功能运行asinvoker。

    如果我将管理功能放在一个dll中,是否有方法将其标记为RequiredAdministrator?我试图使用mt将清单添加到dll,但这似乎不起作用。我需要做什么?

    2 回复  |  直到 15 年前
        1
  •  3
  •   JaredPar    15 年前

    不,没有办法根据DLL来区分应用程序的执行级别。这是一个全过程设置。您必须在应用程序中调用另一个进程,该进程使用提升的priv运行该dll中的代码。

    但是,您有一个选项可以使用run dll或rundll32程序直接运行dll。这是一个独立的Windows程序,设计用于加载和运行特定的DLL。您可以提升rundll进程并获得所需的隔离。

    搜索rundll会给你很多关于如何使用它的建议。

        2
  •  3
  •   Roger Lipscombe    15 年前

    每道工序标高 ,因此不能单独提升dll。您需要在一个单独的、提升的进程中查看动态链接库的宿主;或者您可以查看Elevation COM名称,然后这样做。