程序如何要求管理员特权?

时间:2020-03-06 14:20:16  来源:igfitidea点击:

我正在使用vb.net开发应用程序。为了执行某些任务,应用程序需要计算机中的管理员权限。在程序执行过程中如何要求特权?

切换用户帐户以执行应用程序的一般方法是什么?换句话说,应用程序是否可以通过任意用户帐户运行?

解决方案

Internet上有几篇关于在Vista中开发提升的进程的文章,但是本质上,提升请求涉及在应用清单文件(可以是嵌入式的或者并行的)中以提升状态装饰.NET程序集和WIN32可执行文件。

关于问题,有一篇很棒的博客文章提供了我们可能需要的代码:

用于COM提升的.NET包装器

我尚未完成此操作,但我相信我们可以转到(在VS 2008中)"项目设置"->"应用程序"选项卡,然后单击"查看UAC设置"按钮。这将打开app.manifest文件。我认为其中包含一个标签,其中包含我们要查找的选项。我的有一些选择被注释掉,这应该让我们入门:

我们可以编辑位于项目设置中的UAC设置(在VB 2008中)。寻找那行说

<requestedExecutionLevel level =" asInvoker" uiAccess =" false" />

将level =" asInvoker"更改为

  • level =" asInvoker"(与父进程相同的访问令牌)
  • level =" requireAdministrator(需要完整的管理员)
  • level =" highestAvailable"(当前用户可用的最高特权)