查看: 656|回复: 0
打印 上一主题 下一主题

[其他] 获取cpu序列号,硬盘ID,网卡MAC地址等硬件可用于加密

[复制链接]

2317

主题

54

听众

2万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
20645
精华
62

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2015-9-30 01:42:08 |只看该作者 |倒序浏览

首先在添加引用中选中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;

}

分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2025-8-13 19:37 , Processed in 0.058616 second(s), 29 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部