Capturando dados do computador via software

26/08/2010 01:40

     Recebi um e-mail onde perguntava se tinha algum meio de capturar informações do computador com o objetivo de salvar esta informação no banco de dados onde não deixaria o suposto software funcionar em outra maquina que na seja aquela que foi instalado. Vou mostrar um método muito utilizado no mercado para obter alguns dados do computador e placa de rede (mac) usando a linguagem C#.NET. 

 

Código:

        public static string GetVolumeSerial(string strDriveLetter)

        {

            try

            {

                if (strDriveLetter == "" || strDriveLetter == null) strDriveLetter = "C";

                ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"" + strDriveLetter + ":\"");

 

                disk.Get();

                return disk["SerialNumber"].ToString();

            }

            catch

            {

                return "0";

            }

        }

    

    //O GetVolumeSerial pega o valor do seu HD. 

    

        public static string GetMACAddress()

        {

            try

            {

                ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");

                ManagementObjectCollection moc = mc.GetInstances();

                string MACAddress = String.Empty;

                foreach (ManagementObject mo in moc)

                {

                    if (MACAddress == String.Empty)  // only return MAC Address from first card

                    {

                        if ((bool)mo["IPEnabled"] == true) MACAddress = mo["MacAddress"].ToString();

                    }

                    mo.Dispose();

                }

                MACAddress = MACAddress.Replace(":", " ");

                return MACAddress;

            }

            catch

            {

                return "0";

            }

        }

        

    //O endereço mac da placa de rede. Esse é o codigo mais utilizado para esse caso, porem eu prefiro pega o ID do processador.

    

        public static string GetCPUId()

        {

            try

            {

                string cpuInfo = String.Empty;

                string temp = String.Empty;

                ManagementClass mc = new ManagementClass("Win32_Processor");

                ManagementObjectCollection moc = mc.GetInstances();

                foreach (ManagementObject mo in moc)

                {

                    if (cpuInfo == String.Empty)

                    {

                        cpuInfo = mo.Properties["ProcessorId"].Value.ToString();

                    }

                }

                return cpuInfo;

            }

            catch

            {

                return "0";

            }

        }

     

    //O id da CPU do computador. 

    

        public static string GetNomeComputador()

        {

            try

            {

                return Environment.MachineName.ToString();

            }

            catch (Exception ex)

            {

                throw ex;

            }

        }

        

    Espero ter ajudado, qualquer duvida só entrar em contato.