Como validar os direitos de usuário Windows em um aplicativo Visual Basic .NET ou Visual Basic 2005

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 841699
Sumário
Este artigo descreve como validar nome de usuário do Microsoft Windows do usuário e senha em um aplicativo Microsoft Visual Basic .NET ou Microsoft Visual Basic 2005. Este artigo inclui um exemplo de código que valida um usuário em um aplicativo Visual Basic .NET ou Visual Basic 2005.

Depois que o aplicativo Visual Basic .NET ou Visual Basic 2005 valida o nome de usuário do Windows e a senha do usuário, o aplicativo também verifica que o usuário do Windows possui credenciais administrativas. O aplicativo executa a validação usando o seguinte procedimento:
  • o aplicativo passa o nome de usuário e senha para a função de LogonUser .
  • a função de LogonUser valida o nome de usuário e a senha e retorna True se o nome de usuário e a senha são válidos.
  • se o nome de usuário e senha são válidos, que a função LogonUser recebe um identificador para o símbolo que representa o usuário do Windows.
  • o objeto WindowsIdentity usa esse token para representar o usuário do Windows no aplicativo.
  • o objeto WindowsPrincipal usa o objeto WindowsIdentity para verificar se o usuário do Windows possui credenciais administrativas.
  • se o usuário do Windows tiver credenciais administrativas, o aplicativo permite que o usuário Windows para continuar. Se o usuário do Windows não tiver credenciais administrativas, o usuário do Windows não pode continuar e deve fechar o aplicativo Visual Basic. NET.
INTRODUÇÃO
Este artigo passo a passo descreve como verificar o nome de usuário do Windows do usuário e a senha em um aplicativo que você criar usando o Visual Basic. NET. Este artigo descreve como fornecer funcionalidade a um usuário do Windows com base nos direitos de usuário que receberam o Windows também conta de usuário.

back to the top

Requisitos

Este artigo pressupõe que você esteja familiarizado com os seguintes tópicos:
  • Aplicativos do Windows
  • O Visual Basic programação de .NET ou Visual Basic 2005
A lista a seguir descreve o hardware recomendado, software, infra-estrutura de rede e service packs que você precisa:
  • Microsoft Visual Studio .NET ou Microsoft Visual Studio 2005
  • Microsoft .NET framework
  • Microsoft Windows Platform Software Development Kit (SDK)
back to the top

Criar um aplicativo Visual Basic .NET ou Visual Basic 2005

Para criar um aplicativo que verifica o nome de usuário e senha, execute essas etapas:
  1. Inicie o Visual Studio .NET ou Visual Studio 2005.
  2. No menu arquivo , aponte para novo e, em seguida, clique em Project . A caixa de diálogo New Project é exibida.
  3. Em Project Types , clique em Projetos do Visual Basic .

    Observação No Visual Studio 2005, clique em Visual Basic em Project Types .
  4. Em modelos , clique em Windows Application .
  5. Na caixa nome , digite MyApp e em seguida, clique em OK . Por padrão, um formulário Windows que é denominado Form1 é criado.
back to the top

O Windows Form para implementar a validação de design

Você pode criar o formulário do Windows para aceitar o nome de usuário e a senha em tempo de execução usando controles TextBox . Em seguida, você pode tornar o aplicativo verifique se o Windows quando o usuário Windows clica um controle Button de direitos do usuário. Para fazer isso, execute as seguintes etapas:
  1. No menu Exibir , clique em caixa de ferramentas .
  2. Na caixa de ferramentas, clique duas vezes o TextBox controlar duas vezes para adicionar dois controles TextBox ao formulário Form1. Por padrão, o controle de TextBox TextBox1 e o controle TextBox2 TextBox são adicionados ao formulário Form1.
  3. Posição TextBox controles para que o controle TextBox2 TextBox fique abaixo do controle TextBox1 TextBox e alinhado verticalmente para o controle TextBox1 TextBox .
  4. Clique com o botão direito do mouse o controle TextBox TextBox2 e, em seguida, clique em Propriedades .
  5. Na janela Properties, defina a propriedade PasswordChar * .
  6. Na caixa de ferramentas, clique duas vezes no botão de controle para adicionar um controle Button ao formulário Form1. Por padrão, o controle de botão Button1 é adicionado ao formulário Form1.
  7. Clique com o botão direito do controle de botão Button1 e, em seguida, clique em Propriedades .
  8. Na janela Propriedades, defina o texto de propriedade para Validar usuário .
  9. No Solution Explorer, clique com o botão direito do mouse MyApp , aponte para Add e, em seguida, clique em Add New Item . A caixa de diálogo Add New Item - MyApp aparece.
  10. Em modelos , clique em Windows Form e em seguida, clique em Abrir . Por padrão, é criado um Windows Form que é denominado Form2.
  11. Adicione um controle Button ao formulário Form2. Por padrão, o controle de botão Button1 é adicionado ao formulário Form2.
  12. Clique com o botão direito do controle de botão Button1 e, em seguida, clique em Propriedades .
  13. Na janela Propriedades, defina o texto de propriedade para Adicionar números .
  14. Na caixa de ferramentas, clique duas vezes o rótulo de controle para adicionar um controle Label para o formulário Form2. Por padrão, o controle de rótulo Label1 é adicionado ao formulário Form2.
  15. Clique com o botão direito do controle de Label Label1 e, em seguida, clique em Propriedades .
  16. Na janela Propriedades, defina o tamanho de propriedade para 200, 56 .
  17. Clique duas vezes o controle de botão Button1 e em seguida, adicione o código a seguir ao manipulador de eventos Button1_Click :
    Dim firstnum, secondnum, result As Integerfirstnum = InputBox("Enter the first number")secondnum = InputBox("Enter the second number")result = firstnum + secondnumMessageBox.Show("The sum of the two numbers is:" & result)
back to the top

Escrever código para validar o usuário do Windows em seu aplicativo Visual Basic .NET

Você pode usar a API do Win32 LogonUser para verificar o nome de usuário e a senha. A função LogonUser é declarada na biblioteca de Advapi32.dll. Você pode chamar a função LogonUser do seu aplicativo Visual Basic .NET usando a instrução Declare .

Você deve passar o nome de domínio, o nome de usuário e a senha para a função de LogonUser . A função LogonUser valida o usuário usando esses parâmetros e retorna um valor booleano. Se a função obtiver êxito, você recebe um identificador para um token que representa o usuário do Windows. O objeto WindowsIdentity usa esse token para representar o usuário do Windows em seu aplicativo Visual Basic .NET ou Visual Basic 2005. O objeto WindowsPrincipal usa este objeto WindowsIdentity para verificar direitos de usuário do usuário do Windows.

Para escrever código que implementa a validação em seu aplicativo Visual Basic 2005 ou Visual Basic .NET, siga estas etapas:
  1. No Solution Explorer, clique com o botão direito do mouse em Form1.vb e, em seguida, clique em View Code .
  2. Adicione o seguinte código na parte superior do formulário Form1:
    Imports System.Security.PrincipalImports System.Security.PermissionsImports System.Runtime.InteropServicesImports System.Environment
  3. Localize o código a seguir:
    End Class
  4. Adicione o seguinte código antes do código que localizou na etapa 3:
      'The LogonUser function tries to log on to the local computer 'by using the specified user name. The function authenticates 'the Windows user with the password provided.Private Declare Auto Function LogonUser Lib "advapi32.dll" (ByVal lpszUsername As [String], _   ByVal lpszDomain As [String], ByVal lpszPassword As [String], _   ByVal dwLogonType As Integer, ByVal dwLogonProvider As Integer, _   ByRef phToken As IntPtr) As Boolean'The FormatMessage function formats a message string that is passed as input.<DllImport("kernel32.dll")> _Public Shared Function FormatMessage(ByVal dwFlags As Integer, ByRef lpSource As IntPtr, _   ByVal dwMessageId As Integer, ByVal dwLanguageId As Integer, ByRef lpBuffer As [String], _   ByVal nSize As Integer, ByRef Arguments As IntPtr) As IntegerEnd Function'The CloseHandle function closes the handle to an open object such as an Access token.Public Declare Auto Function CloseHandle Lib "kernel32.dll" (ByVal handle As IntPtr) As Boolean
  5. Localize o código a seguir:
    End Class
  6. Adicione o seguinte código antes do código que localizado na etapa 5:
    'The GetErrorMessage function formats and then returns an error message'that corresponds to the input error code.Public Shared Function GetErrorMessage(ByVal errorCode As Integer) As String    Dim FORMAT_MESSAGE_ALLOCATE_BUFFER As Integer = &H100    Dim FORMAT_MESSAGE_IGNORE_INSERTS As Integer = &H200    Dim FORMAT_MESSAGE_FROM_SYSTEM As Integer = &H1000    Dim msgSize As Integer = 255    Dim lpMsgBuf As String    Dim dwFlags As Integer = FORMAT_MESSAGE_ALLOCATE_BUFFER Or FORMAT_MESSAGE_FROM_SYSTEM Or FORMAT_MESSAGE_IGNORE_INSERTS    Dim lpSource As IntPtr = IntPtr.Zero    Dim lpArguments As IntPtr = IntPtr.Zero    'Call the FormatMessage function to format the message.    Dim returnVal As Integer = FormatMessage(dwFlags, lpSource, errorCode, 0, lpMsgBuf, _            msgSize, lpArguments)    If returnVal = 0 Then       Throw New Exception("Failed to format message for error code " + errorCode.ToString() + ". ")    End If    Return lpMsgBufEnd Function
  7. No Solution Explorer, clique com o botão direito do mouse em Form1.vb e, em seguida, clique em View Designer .
  8. Clique duas vezes o controle de botão Button1 e em seguida, adicione o código a seguir ao manipulador de eventos Button1_Click :
    Dim tokenHandle As New IntPtr(0)Try   Dim UserName, MachineName, Pwd As String   'The MachineName property gets the name of your computer.   MachineName = System.Environment.MachineName   UserName = TextBox1.Text   Pwd = TextBox2.Text   Dim frm2 As New Form2   Const LOGON32_PROVIDER_DEFAULT As Integer = 0   Const LOGON32_LOGON_INTERACTIVE As Integer = 2   tokenHandle = IntPtr.Zero   'Call the LogonUser function to obtain a handle to an access token.   Dim returnValue As Boolean = LogonUser(UserName, MachineName, Pwd, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, tokenHandle)   If returnValue = False Then      'This function returns the error code that the last unmanaged function returned.      Dim ret As Integer = Marshal.GetLastWin32Error()      Dim errmsg As String = GetErrorMessage(ret)      frm2.Show()      frm2.Label1.Text = errmsg      frm2.Button1.Visible = False   Else      'Create the WindowsIdentity object for the Windows user account that is      'represented by the tokenHandle token.      Dim newId As New WindowsIdentity(tokenHandle)      Dim userperm As New WindowsPrincipal(newId)      'Verify whether the Windows user has administrative credentials.      If userperm.IsInRole(WindowsBuiltInRole.Administrator) Then           frm2.Button1.Text = "Add Numbers"           frm2.Label1.Text = "Click this button to add two numbers"           frm2.Show()      Else           frm2.Label1.Text = " You do not have administrative credentials."           frm2.Button1.Visible = False           frm2.Show()      End If   End If   'Free the access token.   If Not System.IntPtr.op_Equality(tokenHandle, IntPtr.Zero) Then      CloseHandle(tokenHandle)   End IfCatch ex As Exception   MessageBox.Show("Exception occurred. " + ex.Message)End Try
back to the top

Verifique se seu aplicativo Visual Basic .NET funciona

Para verificar que a validação foi concluída corretamente, execute estas etapas:
  1. No menu Build , clique em Build Solution .
  2. No menu Debug , clique em Iniciar .
  3. Na caixa TextBox1 , digite um nome de usuário.
  4. Na caixa TextBox2 , digite uma senha.
  5. Clique em Validar usuário .
back to the top

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 841699 - Última Revisão: 05/18/2007 05:19:05 - Revisão: 2.9

Microsoft Visual Basic 2005, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition

  • kbmt kbvs2005swept kbvs2005applies kbdevsecurity kbsecurity kbauthentication kbuser kbpermissions kbpasswords kbwindowsforms kbcode kbhowtomaster kbhowto KB841699 KbMtpt
Comentários