C# WIN 生成机器码

内容归档,不多赘述。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
using System;
using System.Collections.Generic;
using System.Linq;
using System.Management;
using System.Security.Cryptography;
using System.Text;

namespace MachineCode
{
public class MachineCode
{

public static string GetMachineCode()
{
try
{
string rs = ToReverse(To_md5(GetCpuInfo() + GetMoAddress() + GetHDid()));
return rs;
}
catch (Exception ex)
{
return null;
}
}

/// <summary>
/// 获取cpu序列号
/// </summary>
/// <returns> string </returns>
private static string GetCpuInfo()
{
string cpuInfo = " ";
using (ManagementClass cimobject = new ManagementClass("Win32_Processor"))
{
ManagementObjectCollection moc = cimobject.GetInstances();
foreach (ManagementObject mo in moc)
{
cpuInfo = mo.Properties["ProcessorId"].Value.ToString();
mo.Dispose();
}
}
return cpuInfo.ToString();
}

/// <summary>
/// 获取硬盘ID
/// </summary>
/// <returns> string </returns>
private static string GetHDid()
{
string HDid = " ";
using (ManagementClass cimobject1 = new ManagementClass("Win32_DiskDrive"))
{
ManagementObjectCollection moc1 = cimobject1.GetInstances();
foreach (ManagementObject mo in moc1)
{
HDid = (string)mo.Properties["Model"].Value;
mo.Dispose();
}
}
return HDid.ToString();
}

/// <summary>
/// 获取网卡硬件地址
/// </summary>
/// <returns> string </returns>
private static string GetMoAddress()
{
string MoAddress = " ";
using (ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"))
{
ManagementObjectCollection moc2 = mc.GetInstances();
foreach (ManagementObject mo in moc2)
{
if ((bool)mo["IPEnabled"] == true)
MoAddress = mo["MacAddress"].ToString();
mo.Dispose();
}
}
return MoAddress.ToString();
}




/// <summary>
/// 根据字符串生成MD5
/// </summary>
/// <param name="str">原字符串</param>
/// <param name="up">是否大小写</param>
/// <returns>生成后的MD5</returns>
public static string To_md5(string str, bool up = false)
{
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
string t2 =
BitConverter.ToString(md5.ComputeHash(
UTF8Encoding.Default.GetBytes(str)));
t2 = t2.Replace("-", "");
if (!up)
return t2.ToLower();
else
return t2.ToUpper();
}


public static string ToReverse(string str)
{
return new string(str.ToCharArray().Reverse().ToArray());
}
}
}