请求的dll执行级别

时间:2009-12-10 18:09:40

标签: c# .net dll windows-vista uac

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

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

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:3)

提升是按进程,因此您无法自行提升DLL。您需要在单独的升级过程中查看托管DLL;或者你可以看一下高程COM的名字,然后就这样做。