Desenvolvimento - Visual Basic .NET
VB.NET - Obtendo o endereço MAC
Esse artigo procura mostrar como você pode obter o endereço MAC da sua placa de rede usando o Visual Basic .NET.
por José Carlos MacorattiMAC 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...
- Entity Framework 4: Repositório GenéricoVisual Basic .NET
- As edições 14 da Easy .net Magazine e 88 da .net Magazine já estão disponíveis.ADO.NET
- Postando no Twiiter com .NET e Migre.meC#
- Setup ApplicationsVisual Basic .NET
- Problemas na manipulação de arquivos do MS Excel com .NETVisual Basic .NET