C\#소프트웨어 등록 코드 의 실현 코드
//
public static string GetDiskVolumeSerialNumber()
{
ManagementClass mc = new ManagementClass(“Win32_NetworkAdapterConfiguration”);
ManagementObject disk = new ManagementObject(“win32_logicaldisk.deviceid=”d:”");
disk.Get();
return disk.GetPropertyValue(“VolumeSerialNumber”).ToString();
}
// CPU
public static string getCpu()
{
string strCpu = null;
ManagementClass myCpu = new ManagementClass(“win32_Processor”);
ManagementObjectCollection myCpuConnection = myCpu.GetInstances();
foreach (ManagementObject myObject in myCpuConnection)
{
strCpu = myObject.Properties["Processorid"].Value.ToString();
break;
}
return strCpu;
}
//
public static string getMNum()
{
string strNum = getCpu() + GetDiskVolumeSerialNumber();// 24 Cpu
string strMNum = strNum.Substring(0, 24);// 24
return strMNum;
}
public static int[] intCode = new int[127];//
public static int[] intNumber = new int[25];// Ascii
public static char[] Charcode = new char[25];//
public static void setIntCode()// 10
{
for (int i = 1; i < intCode.Length; i++)
{
intCode[i] = i % 9;
}
}
두 번 째 단 계 를 생 성 합 니 다.기계 코드 에 따라 등록 코드 생 성
//
public static string getRNum()
{
setIntCode();// 127
for (int i = 1; i < Charcode.Length; i++)//
{
Charcode[i] = Convert.ToChar(getMNum().Substring(i C 1, 1));
}
for (int j = 1; j < intNumber.Length; j++)// ASCII 。
{
intNumber[j] = intCode[Convert.ToInt32(Charcode[j])] + Convert.ToInt32(Charcode[j]);
}
string strAsciiName = “”;//
for (int j = 1; j < intNumber.Length; j++)
{
if (intNumber[j] >= 48 && intNumber[j] <= 57)// ASCII 0-9
{
strAsciiName += Convert.ToChar(intNumber[j]).ToString();
}
else if (intNumber[j] >= 65 && intNumber[j] <= 90)// ASCII A-Z
{
strAsciiName += Convert.ToChar(intNumber[j]).ToString();
}
else if (intNumber[j] >= 97 && intNumber[j] <= 122)// ASCII a-z
{
strAsciiName += Convert.ToChar(intNumber[j]).ToString();
}
else// ASCII
{
if (intNumber[j] > 122)// ASCII z
{
strAsciiName += Convert.ToChar(intNumber[j] C 10).ToString();
}
else
{
strAsciiName += Convert.ToChar(intNumber[j] C 9).ToString();
}
}
}
return strAsciiName;
}
세 번 째 단계.등록 상 태 를 확인 하고 등록 하지 않 으 면 사용자 정의 로 사용 할 수 있 습 니 다.
/// <summary>
///
/// </summary>
private void CheckRegist()
{
this.btn_reg.Enabled = true;
RegistryKey retkey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(“software”, true).CreateSubKey(“wxk”).CreateSubKey(“wxk.INI”);
foreach (string strRNum in retkey.GetSubKeyNames())//
{
if (strRNum == clsTools.getRNum())
{
thControl(true);
return;
}
}
thControl(false);
Thread th2 = new Thread(new ThreadStart(thCheckRegist2));
th2.Start();
}
}
/// <summary>
///
/// </summary>
private static void thCheckRegist2()
{
MessageBox.Show(“ , 3000000 !”, “ ”, MessageBoxButtons.OK, MessageBoxIcon.Information);
Int32 tLong;
try
{
tLong = (Int32)Registry.GetValue(“HKEY_LOCAL_MACHINE\SOFTWARE\angel”, “UseTimes”, 0);
MessageBox.Show(“ ” + tLong + “ ”, “ ”, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch
{
Registry.SetValue(“HKEY_LOCAL_MACHINE\SOFTWARE\angel”, “UseTimes”, 0, RegistryValueKind.DWord);
MessageBox.Show(“ ”, “ ”, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
tLong = (Int32)Registry.GetValue(“HKEY_LOCAL_MACHINE\SOFTWARE\angel”, “UseTimes”, 0);
if (tLong < 3000000)
{
int Times = tLong + 1;
Registry.SetValue(“HKEY_LOCAL_MACHINE\SOFTWARE\angel”, “UseTimes”, Times);
}
else
{
MessageBox.Show(“ ”, “ ”, MessageBoxButtons.OK, MessageBoxIcon.Warning);
Application.Exit();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[정상] [소프트 테스트] 소프트웨어 공 성 사자 시험 (5) - 데이터 구조앞에서 중 소 편 은 이미 사람들 에 게 을 소 개 했 는데 사실은 이 과정 에서 의 이해 가 깊 어야 한다.그 다음 에 직면 해 야 할 나 라 는 '데이터 구조' 이다. 그림 에서 알 수 있 듯 이 데이터 구 조 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.