0

我正在开发一个基于 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

4 回答 4

1

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

于 2011-11-10T11:24:13.573 回答
1

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

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

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

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

于 2011-11-10T11:49:45.750 回答
0

UAC 的设计使您无法为所欲为。UAC 确保为了提升用户必须通过 UAC 对话(管理员同意对话或肩上对话)。您需要使您的期望适应 UAC 的现实。

于 2011-11-10T11:05:42.367 回答
-1

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

于 2012-06-03T19:02:45.433 回答