在VB.NET中以管理员身份自动运行程序

时间:2011-11-10 09:56:03

标签: windows vb.net windows-7 administrator

我正在开发一个基于VB.NET的应用程序,它需要管理权限才能正常运行。但是我在网上浏览了几个教程,并且都提到了如何使用mainifest文件执行此操作。这种技术的问题是无论何时打开程序我都需要输入管理员密码,但我希望这是自动发生的。 (用户不应键入管理员密码,必须从代码级别输入密码)

以下代码是我能找到的最接近的代码,但它也不能满足我的问题,

Dim securePass As New Security.SecureString()
Dim pass As String = "password"

For Each c As Char In pass
    securePass.AppendChar(c)
Next

' If there isn't a domain, set the argument to 'Nothing', as demonstrated below.
Process.Start("testsoftware\WinKBSel\WinKBSel1003.exe", "username", pass, Nothing)

有没有人可以让我知道如何在不要求用户输入管理员密码的情况下执行此操作?

4 个答案:

答案 0 :(得分:1)

如果您有一个在管理员帐户下运行的后端服务,您可能最好将应用程序拆分,您的应用程序可以使用该服务来执行它需要的高级权限。 UAC旨在保护用户免受攻击,您可以通过添加后端服务来解决这个问题......但要非常小心以这种方式打开漏洞,因为它们可能被其他应用程序/病毒利用。在应用程序中存储administror密码总是一个坏主意,因为可以反编译应用程序并提取密码。

答案 1 :(得分:1)

除非已知用户名/密码,否则您无法创建将自动以用户身份登录的程序。

这意味着您要么限制在您的应用已经知道凭据的系统上运行,您的用户必须在您的应用中输入凭据,或者您的用户必须使用Windows中的“运行方式”功能才能使用正确的用户。

如果您提议的内容实际上是可行的,那么它将代表巨大的安全漏洞:您可以像任何用户一样运行任何代码,而无需先进行身份验证。这不是一件好事!

这样想:如果你出售了一个程序,即使没有你的许可也会以管理员身份自动登录 ,你会有什么感受?

答案 2 :(得分:0)

UAC旨在让您无法做您想做的事。 UAC确保为了提升用户必须通过UAC对话框(管理员同意对话框或肩上对话框)。您需要根据UAC的实际情况调整您的期望。

答案 3 :(得分:-1)

您不需要此操作的代码,UAC已制作,因此您可以在未经用户许可的情况下自动登录。您可以做的是使用清单并更改启动,以便在应用程序启动时以管理员身份运行并请求权限!更改清单。查一查!