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

问题描述:

我正在研究VB.NET中的一个小应用程序。该程序需要管理员权限才能执行某些任务。如果程序在执行过程中是否有办法请求管理员权限?程序如何要求管理员权限?

更改运行应用程序的用户帐户的一般方法是什么?

+2

看起来你已经发布了两次相同的问题:http://stackoverflow.com/questions/90674/how-does-a-program-ask-for-administrator-privileges – 2008-09-18 07:26:44

根据您的需要,有多种方法。一些细节在the application developer requirements for UAC中给出。

  1. 包含一个UAC清单,它使您的程序在启动时需要管理员权限。
  2. 使用建议的方法之一来调用提升用完流程。其中一个最好的方法是使用the COM elevation monikerCoCreateInstanceAsAdmin来调用以管理员身份运行的COM对象上的方法。这对于在VB.Net中工作可能非常棘手。我在C++中可以正常工作,尽管
  3. 另一个好方法是将需要管理员权限的代码部分分离到使用UAC清单要求管理员权限的应用程序中。在这种情况下,您的主应用程序不需要以管理员身份运行。当您需要管理员权限时,您将调用外部应用程序。
+0

我使用了方法3,但它只是在Win7上工作,它不能在Vista上工作,相反,给我“System.ComponentModel.Win32Exception(0x80004005)请求的操作需要提升” – 2011-03-27 07:10:38

您可以在应用程序的清单文件中指定它。

也检出this linkthis linkthis link

Try 
        Dim procInfo As New ProcessStartInfo() 
        procInfo.UseShellExecute = True 
        procInfo.FileName = 'Filename here 
        procInfo.WorkingDirectory = "" 
        procInfo.Verb = "runas" 
        Process.Start(procInfo) 
       Catch ex As Exception 
        MsgBox(ex.Message.ToString(), vbCritical) 
       End Try 
      End If 

最简单的方法来做到这一点是单击项目选项卡上 - >添加Windows窗体 - > .XML文件 - >命名(程序名).manifest的 - >粘贴此代码在此link(谢谢JDOConal) - >然后在解决方案资源管理器框中右键单击您的项目名称,然后按属性 - >在第一个选项卡上选择清单,然后选择您创建的.manifest文件 - > build = done!