纳金网

标题: 获取cpu序列号,硬盘ID,网卡MAC地址等硬件可用于加密 [打印本页]

作者: 王者再临    时间: 2015-9-30 01:42
标题: 获取cpu序列号,硬盘ID,网卡MAC地址等硬件可用于加密

首先在添加引用中选中System.Management

using System.Management;

using System.Management.Instrumentation;

private void GetInfo()

{

string cpuInfo = “”;//cpu序列号

ManagementClass cimobject = new ManagementClass(“Win32_Processor”);

ManagementObjectCollection moc = cimobject.GetInstances();

foreach(ManagementObject mo in moc)

{

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

Response.Write (“cpu序列号:”+cpuInfo.ToString ());

}

//获取硬盘ID

String HDid;

ManagementClass cimobject1 = new ManagementClass(“Win32_DiskDrive”);

ManagementObjectCollection moc1 = cimobject1.GetInstances();

foreach(ManagementObject mo in moc1)

{

HDid = (string)mo.Properties[“Model”].Value;

Response.Write (“硬盘序列号:”+HDid.ToString ());

}

//获取网卡硬件地址

ManagementClass mc = new ManagementClass(“Win32_NetworkAdapterConfiguration”);

ManagementObjectCollection moc2 = mc.GetInstances();

foreach(ManagementObject mo in moc2)

{

if((bool)mo[“IPEnabled”] == true)

Response.Write(“MAC address\t{0}”+mo[“MacAddress”].ToString());

mo.Dispose();

}

}

public static float GetCPUPersent()

{

float cpuload = 0;

const string categoryname = “processor”;

const string countername = “% processor time”;

const string instancename = “_total”;

PerformanceCounter pc = new PerformanceCounter(categoryname, countername, instancename);

int i = 10;

while (i > 0)

{

Thread.Sleep(1000); // wait for 1 second

cpuload = pc.NextValue();

if (cpuload > 0)

{

break;

}

i--;

}

return cpuload;

}

public static void GetDiskSpace(string path, out long DiskAll, out long DiskActive)

{

DiskAll = 0;

DiskActive = 0;

long a, b, c;

int aaa = GetDiskFreeSpaceEx(path, out a, out b, out c);

DiskAll = (long)(b / 1024 / 1024);

DiskActive = (long)(a / 1024 / 1024);

}

public static void GetMemoryInfo(out uint MemoryAll, out uint MemoryUsed)

{

MemoryAll = 0;

MemoryUsed = 0;

MEMORY_INFO MemInfo = new MEMORY_INFO();

GlobalMemoryStatus(ref  MemInfo);

MemoryAll = MemInfo.dwTotalPhys / 1024 / 1024;

MemoryUsed = (MemInfo.dwTotalPhys - MemInfo.dwAvailPhys) / 1024 / 1024;

}

[DllImport(“kernel32”)]

public static extern void GlobalMemoryStatus(ref  MEMORY_INFO meminfo);

//定义内存的信息结构

[StructLayout(LayoutKind.Sequential)]

public struct MEMORY_INFO

{

public uint dwLength;

public uint dwMemoryLoad;

public uint dwTotalPhys;

public uint dwAvailPhys;

public uint dwTotalPageFile;

public uint dwAvailPageFile;

public uint dwTotalVirtual;

public uint dwAvailVirtual;

}






欢迎光临 纳金网 (http://go.narkii.com/club/) Powered by Discuz! X2.5