2014-01-06 4 views
1

사용자가 프로파일의 특정 부분을 복원 할 수있는 상당히 기본적인 VB.NET 프로젝트가 있습니다 (IE 즐겨 찾기, 빠른 실행, 그런 종류의 작업) .프로젝트의 일부에 대한 관리자 자격 증명 요청

다른 사용자 대신이 프로필 부분을 복원 할 수있는 기능을 추가했지만이 경우 도메인에 대한 관리자 권한이 있어야하며 해당 자격 증명을 묻는 메시지가 나타나기를 바랍니다.

프로젝트의 일부분에서만 가능합니까? 나는 명시된 것을 들여다 보았지만, (제한된) 나의 이해에서 볼 때, 프로젝트의 구성 요소가 아니라 전체적으로 프로젝트에만 적합하다는 것 같습니다. 감사.

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

    '** Require admin privilages *' 

Else 
    Return True 
End If 
+1

전체 프로젝트를 수행하거나 다른 .exe 또는 다른 명령 세트를 시작해야합니다. app.manifest에서 필요한 권한을 변경할 수 있습니다. – SomeNickName

+0

좋습니다. 자격 증명을 묻는 대신 현재 사용자의 자격 증명을 확인하여 현재 컴퓨터에 대한 관리자 권한이 있는지 확인하는 방법에 대해 설명합니다. 그게 가능하니? –

답변

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 
0

내가이있어 귀하의 코멘트 응답 : 응용 프로그램이 관리자로 여부를 runned되는 경우

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

그것은 알 수 있습니다.

+0

감사합니다. 이 시도를하고 있지만 오류가 발생합니다. ''사용자 '는'내 '의 구성원이 아닙니다 .'; 어떤 생각을 어떻게 고쳐야합니까? –

+0

절대로, [나는 그 문제가 전에 잊었다] (http://stackoverflow.com/questions/20610944/application-is-not-a-member-of-my)를 잊었다. 나는 그것이 작동하지 않는다고 말하는 것이 두렵다. 사용자가 직접적으로 아니라 기본 제공 Administrators 그룹에 속한 그룹의 구성원이기 때문일 수 있습니까? –

+0

이것은 현재 사용자가 관리자 권한을 가지고 있는지 확인하지 않고 현재 응용 프로그램이 관리자 권한으로 실행 중인지 확인하기 위해 설명한대로 작동합니다. – SomeNickName

관련 문제