2013-03-14 129 views
0

我编写了一个程序,需要用户使用本地管理员帐户登录。 但是本地管理员帐户名称因每台PC而不同,所以我无法对用户名进行硬编码。Vb.net程序使用本地管理员帐户登录

下面的代码只在管理员组中检索到用户,但没有进行身份验证。可以帮助? 1.如何验证用户名密码&? 2.如何强制用户仅使用本地用户帐户登录。

 Dim localMachine As New DirectoryEntry("WinNT://" & "localhost") 
     Dim admGroup As DirectoryEntry = localMachine.Children.Find("Administrators", "group") 
     Dim members As Object = admGroup.Invoke("members", Nothing) 
     For Each groupMember As Object In CType(members, IEnumerable) 
      Dim member As New DirectoryEntry(groupMember) 
      MsgBox(member.Name) 
     Next 

回答

0

确保您的应用程序具有管理权限运行的最好,最简单的办法就是embed a manifest,使这样一个需求。

您应该从不硬编码类似这样的东西,并且UAC的存在意味着不能保证作为管理员组成员的用户在您的进程中拥有管理权限。

VB.NET编译器会自动将默认清单嵌入到应用程序中,但该默认清单不会请求管理权限。所以你需要添加一个自定义清单。
得到一个,请按照下列步骤操作:

  1. 在解决方案资源管理器右键单击项目。
  2. 从上下文菜单中选择“属性”。
  3. 切换到“应用程序”选项卡。
  4. 单击“查看Windows设置”打开清单文件。
  5. 进行以下修改:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />