VB.NET - Obtendo o endereço MAC
Você sabe o que é o endereço MAC ? Para compreender melhor o artigo vou dar uma breve introdução a respeito. Acompanhe-me...
MAC significa Media Access Control (Endereços MAC) e possuem 48 bits de tamanho expressos com doze dígitos hexadecimais. Eles são utilizados para identificar a placa de rede.
Os primeiros seis dígitos são administrados pelo consórcio IEEE e identificam o fabricante ou fornecedor da placa de rede ; os seis últimos são uma identificação da placa.
Não existem duas placas com o mesmo endereço MAC , ou seja, este endereço é único para cada placa de rede em cada computador. Os endereços MAC geralmente são gravados na memória ROM e copiados para a memória de RAM quando a placa de rede é iniciada.
Antes de sair da fábrica, o fabricante do hardware atribui um endereço físico a cada placa de rede. Esse endereço é programado em um chip na placa de rede. Como o endereço MAC está localizado na placa de rede, se a placa de rede fosse trocada em um computador, o endereço físico da estação mudaria para o novo endereço MAC. Há dois formatos para os endereços MAC: 0000.0c12.3456 ou 00-00-0c-12-34-56.
Em uma rede Ethernet, quando um dispositivo quer enviar dados para outro dispositivo, ele pode abrir um caminho de comunicação com o outro dispositivo usando o seu endereço MAC. Quando uma origem envia dados em uma rede, os dados carregam o endereço MAC do destino pretendido. Como esses dados trafegam pelos meios da rede, a placa de rede em cada dispositivo na rede verifica se o seu endereço MAC corresponde ao endereço de destino físico carregado pelo pacote de dados. Se não corresponder, a placa de rede descarta o pacote de dados. Se não houver correspondência, a placa de rede ignora o pacote de dados e permite que ele continue sua viajem pela rede até a estação seguinte.
Você pode obter informações sobre o endereço MAC da sua placa de rede usando o comando Ipconfig /all.
Agora que você já sabe o que o endereço MAC eu vou mostrar como você pode obter o endereço MAC da sua placa de rede usando o Visual Basic .NET.
Para poder obter sucesso neste empreitada vamos usar o namespace System.Management.
Este namespace fornece um rico conjunto de informação de gerenciamento e eventos de gerenciamento sobre o sistema , dispositivos e aplicações relacionadas ao WMI - Windows Management Instrumentation. Através deles podemos consultar informações sobre aplicações , serviços e dispositivos do sistema.
Vamos então ao que interessa. Inicie um novo projeto no VS.NET do tipo Windows Application e no formulário padrão inclua um controle ListBox e um controle Button conforme figura abaixo:
Atenção : - Eu estou usando o Visual Studio 2003 e poderá haver algumas diferenças na implementação das classes do namespace System.Management para versões anteriores. |
Agora você vai precisar incluir uma referência a System.Management.dll no seu projeto. Para fazer isto clique com o botão direito sobre o nome do projeto e no menu suspenso selecione a opção : Add Reference. A seguir selecione o arquivo conforme a figura abaixo:
Feito isto você já pode partir para o código da aplicação.
No evento Click do botão de comando inclua o código abaixo:
Private Sub
Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button1.Click Dim mc As System.Management.ManagementClass Dim mo As System.Management.ManagementBaseObject mc = New Management.ManagementClass("Win32_NetworkAdapterConfiguration") Dim moc As Management.ManagementObjectCollection = mc.GetInstances For Each mo In moc If mo.Item("IPenabled") = True Then ListBox1.Items.Add("Endereço MAC " & mo.Item("MacAddress")) End If Next End Sub |
Rode o projeto e clique no botão. Você irá obter o endereço MAC da placa de rede sua máquina (se ela existir ...). Abaixo o resultado para minha máquina e a comparação com o comando ipconfig /all:
Como viram o resultado obtido é idêntico ao do comando ipconfig /all. Portanto concluímos que funciona.
Se você estiver se perguntando para que serve isto eu vou dar uma pequena sugestão :
Como o endereço MAC é único você pode usar esta informação para controlar a instalação da sua aplicação em máquinas com o endereço MAC conhecidos protegendo assim sua aplicação.
Nota: Existe uma outra maneira de obter o endereço MAC usando o processo GetMac.exe. Funciona assim :
Você executa o processo GetMac.exe e redireciona o resultado para uma variável do seu programa. Este resultado é o endereço MAC. O código poderia ser implementado assim :
Public
Function EnderecoMac() As String Dim end_Mac As String Dim p As New Process p.StartInfo.UseShellExecute = False p.StartInfo.RedirectStandardOutput = True p.StartInfo.FileName = "GetMac.exe" p.StartInfo.Arguments = "/fo list" p.Start() end_Mac = p.StandardOutput.ReadLine p.WaitForExit() Return end_Mac.Substring(23) End Function |
Eu pessoalmente não recomendo muito este caminho pois ele depende de que esteja instalado o programa GetMac.exe na máquina e em testes que eu fiz o programa travou algumas vezes.
E por hoje é só , até mais ...
Veja os
Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique
e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências: