请求的dll执行级别

epo*_*ter 5 .net c# dll uac windows-vista

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

如果我将管理功能放在dll中,有没有办法将其标记为requireAdministrator?我尝试使用MT为dll添加清单,但这似乎不起作用.我需要做什么?

Jar*_*Par 3

不,没有办法在 DLL 的基础上区分应用程序的执行级别。这是一个进程范围的设置。您必须在应用程序中调用另一个进程,该进程以提升的权限运行该 DLL 中的代码。

不过,您可以选择的一种选择是使用 rundll 或 rundll32 程序直接运行 DLL。这是一个独立的 Windows 程序,旨在加载和运行特定的 DLL。您可以提升 rundll 进程并获得您想要的隔离。

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