我有一个相当基本的VB.NET项目,允许用户恢复其配置文件的某些部分,如果它需要重新创建(IE收藏夹,快速启动,那种事情)。
我已经为项目添加了代表其他用户恢复这些配置文件部分的功能,但为此您应该拥有我们域的管理员权限,并且我希望项目提示输入适当的凭据。
这只适用于项目的一部分吗?我已经查明了清单,但是从我(有限的)理解来看,它们似乎只适用于整个项目,而不是项目的组件。感谢。
If Username = "" Then
Return False
ElseIf Not Username = CurrentUsername Then
'** Require admin privilages *'
Else
Return True
End If
答案 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