Dev (Back & Front)ARTIGO

Pegando dados do computador facilmente via software

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.

Com mais de 20 anos trabalhando no mercado de tecnologia. Mestre em Engenharia Elétrica voltada para o mundo mobile, com mais de 20 livros publicados e cerca de 700 artigos publicados com intuito de ajudar àqueles que querem aprender a programar (site, software, desktop, serviços, api e mobile). Site pessoal: https://www.mauriciojunior.net - MVP, MCAD, MCP Microsoft

Ver perfil