程序如何要求管理员权限?
问题描述:
我正在研究VB.NET中的一个小应用程序。该程序需要管理员权限才能执行某些任务。如果程序在执行过程中是否有办法请求管理员权限?程序如何要求管理员权限?
更改运行应用程序的用户帐户的一般方法是什么?
答
根据您的需要,有多种方法。一些细节在the application developer requirements for UAC中给出。
- 包含一个UAC清单,它使您的程序在启动时需要管理员权限。
- 使用建议的方法之一来调用提升用完流程。其中一个最好的方法是使用the COM elevation moniker和
CoCreateInstanceAsAdmin
来调用以管理员身份运行的COM对象上的方法。这对于在VB.Net中工作可能非常棘手。我在C++中可以正常工作,尽管 - 另一个好方法是将需要管理员权限的代码部分分离到使用UAC清单要求管理员权限的应用程序中。在这种情况下,您的主应用程序不需要以管理员身份运行。当您需要管理员权限时,您将调用外部应用程序。
+0
我使用了方法3,但它只是在Win7上工作,它不能在Vista上工作,相反,给我“System.ComponentModel.Win32Exception(0x80004005)请求的操作需要提升” – 2011-03-27 07:10:38
答
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!
看起来你已经发布了两次相同的问题:http://stackoverflow.com/questions/90674/how-does-a-program-ask-for-administrator-privileges – 2008-09-18 07:26:44