请求部分项目的管理员凭据

时间:2014-01-06 14:56:19

标签: vb.net credentials

我有一个相当基本的VB.NET项目,允许用户恢复其配置文件的某些部分,如果它需要重新创建(IE收藏夹,快速启动,那种事情)。

我已经为项目添加了代表其他用户恢复这些配置文件部分的功能,但为此您应该拥有我们域的管理员权限,并且我希望项目提示输入适当的凭据。

这只适用于项目的一部分吗?我已经查明了清单,但是从我(有限的)理解来看,它们似乎只适用于整个项目,而不是项目的组件。感谢。

If Username = "" Then
    Return False
ElseIf Not Username = CurrentUsername Then

    '** Require admin privilages *'

Else
    Return True
End If

2 个答案:

答案 0 :(得分:0)

回答你的评论我得到了这个:

If My.User.IsInRole(ApplicationServices.BuiltInRole.Administrator) Then
        MessageBox.Show("Yes")
    Else
        MessageBox.Show("No")
    End If

它会告诉您的应用程序是否以管理员身份运行。

答案 1 :(得分:0)

我最终想到这一点(差不多)。下面的代码使用可选“设置”表单中提供的用户名和密码来检查当前用户是否是我们域中内置Administrators组的成员。

Public Function IsAuthenticatedUser(ByVal Username As String,
                                    Optional ByVal Group As String = "Administrators") As Boolean

    Dim IsAuthenticated As Boolean = False

    Try
        Using RootContext2 As New PrincipalContext(ContextType.Domain,
                                                   "dynedrewett.com",
                                                   "DC=dynedrewett,DC=com",
                                                   Me.formSettings.txtUsername.Text,
                                                   Me.formSettings.txtPassword.Text & "XXX"), _
            TheGroup As GroupPrincipal = GroupPrincipal.FindByIdentity(RootContext2, IdentityType.Name, Group), _
            TheUser As UserPrincipal = UserPrincipal.FindByIdentity(RootContext2, IdentityType.SamAccountName, Username)

            If TheGroup IsNot Nothing AndAlso TheUser IsNot Nothing Then

                For Each SingleGroup As Principal In TheGroup.GetMembers(True)
                    If SingleGroup.Name = TheUser.DisplayName Then
                        IsAuthenticated = True
                        Exit For
                    End If
                Next

            Else
                IsMember = False
            End If

            TheGroup.Dispose()
            TheUser.Dispose()

        End Using
    Catch Ex As Exception
        Dim ErrorForm As New formError(Ex, "Ensure that valid Administrator Credentials are specified in the application Settings.")
    End Try

    Return IsAuthenticated

End Function