Olá, pessoal. Hoje gostaria de mostrar como pegar alguns dados do computador e placa de rede (mac adress) via software, usando a linguagem C#.NET. Fiz métodos simples, para serem usados nos aplicativos apenas chamando e passando os parâmetros, se necessário.
Requisitos:
- Linguagem C#.NET
- Ferramenta Visual Studio .NET
- Versão testada: .NET 2.0 e .NET 3.5.
Não tenho muito o que explicar sobre os métodos, o importante é o perfeito funcionamento dos mesmos.
/// <summary><br /> /// return Volume Serial Number from hard drive<br /> /// </summary><br /> /// <param name="strDriveLetter">[optional] Drive letter</param><br /> /// <returns>[string] VolumeSerialNumber</returns><br /> public static string GetVolumeSerial(string strDriveLetter)<br /> {<br /> try<br /> {<br /> if (strDriveLetter == "" || strDriveLetter == null) strDriveLetter = "C";<br /> ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"" + strDriveLetter + ":\"");<br /><br /> disk.Get();<br /> return disk["VolumeSerialNumber"].ToString();<br /> }<br /> catch<br /> {<br /> return "0";<br /> }<br /> }<br /> ........................................................................................Code 1
O nome do método é GetVolumeSerial, ou seja, ele pega o valor do seu HD, pode ser o “C” ou o “D”. É importante passar um valor como parâmetro para pegar um volume específico.
/// <summary><br /> /// Returns MAC Address from first Network Card in Computer<br /> /// </summary><br /> /// <returns>[string] MAC Address</returns><br /> public static string GetMACAddress()<br /> {<br /> try<br /> {<br /> ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");<br /> ManagementObjectCollection moc = mc.GetInstances();<br /> string MACAddress = String.Empty;<br /> foreach (ManagementObject mo in moc)<br /> {<br /> if (MACAddress == String.Empty) // only return MAC Address from first card<br /> {<br /> if ((bool)mo["IPEnabled"] == true) MACAddress = mo["MacAddress"].ToString();<br /> }<br /> mo.Dispose();<br /> }<br /> MACAddress = MACAddress.Replace(":", " ");<br /> return MACAddress;<br /> }<br /> catch<br /> {<br /> return "0";<br /> }<br /> }Code 2
O segundo método pega o endereço mac da placa de rede. É um número bem grande e funciona melhor do que pegar o ip da máquina que pode mudar a todo tempo.
/// <summary><br /> /// Return processorId from first CPU in machine<br /> /// </summary><br /> /// <returns>[string] ProcessorId</returns><br /> public static string GetCPUId()<br /> {<br /> try<br /> {<br /> string cpuInfo = String.Empty;<br /> string temp = String.Empty;<br /> ManagementClass mc = new ManagementClass("Win32_Processor");<br /> ManagementObjectCollection moc = mc.GetInstances();<br /> foreach (ManagementObject mo in moc)<br /> {<br /> if (cpuInfo == String.Empty)<br /> {// only return cpuInfo from first CPU<br /> cpuInfo = mo.Properties["ProcessorId"].Value.ToString();<br /> }<br /> }<br /> return cpuInfo;<br /> }<br /> catch<br /> {<br /> return "0";<br /> }<br /> }Code 3
O código 3 é um método que pega o id da CPU do computador. Funciona muito bem por sinal. O quarto e último método que deixo registrado é o responsável em pegar o nome da máquina, veja:
/// <summary><br /> /// Retorna o nome do computador<br /> /// </summary><br /> /// <returns></returns><br /> public static string GetNomeComputador()<br /> {<br /> try<br /> {<br /> return Environment.MachineName.ToString();<br /> }<br /> catch (Exception ex)<br /> {<br /> throw ex;<br /> }<br /> }Code 4
Bom, por enquanto eu fico por aqui. Se houver alguma dúvida, basta entrar em contato.








