Capturando dados do computador via software
26/08/2010 01:40Recebi 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.