您的位置:首页 > 编程语言 > C#

给软件增加注册功能 c#

2016-08-16 15:12 316 查看
1.软件注册类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Management;
using System.IO;
using System.Diagnostics;
using System.Configuration;

namespace Text2Excel.Helper
{
public static class SoftRegister
{
private static string SoftVersion = "V02";//v0.1
private static string SoftMD5 = string.Empty;
private static string DiskVolume = string.Empty;
private static string CPUSerialNum = string.Empty;
private static string PublicKey = "<RSAKeyValue><Modulus>kkrIPGLqt2CUSeSLC3l4lgJzLuBt0GGwTI7Jqt9SbHmj8Kaz5ffPbHY3aibx4jF8bmWlyNiO8LTc2qL6CV1mCL599mStYhIdePElE9+WxniSc3YCCzKxpTnWjRL7ROA25fQPJghAWUiWva7VamwjF0rLHDgX+rcuGF7LScY49B0=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";
private static string getDiskVolume()
{
//ManagementClass mc = new ManagementClass("win32_NetworkAdapterConfiguration");
ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"c:\"");
disk.Get();
return disk.GetPropertyValue("VolumeSerialNumber").ToString();
}
private static string getCPUserialNum()
{
string strCpu = null;
ManagementClass myCpu = new ManagementClass("win32_Processor");
ManagementObjectCollection myCpuCollection = myCpu.GetInstances();
foreach (ManagementObject myObject in myCpuCollection)
{
strCpu = myObject.Properties["Processorid"].Value.ToString();
}
return strCpu;
}
private static string getSoftMD5()
{
string fileName = System.Windows.Forms.Application.ExecutablePath;
try
{
FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.Read);
System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] retVal = md5.ComputeHash(file);
file.Close();

StringBuilder sb = new StringBuilder();
for (int i = 0; i < retVal.Length; i++)
{
sb.Append(retVal[i].ToString("x2"));
}
return sb.ToString().ToUpper();
}
catch (Exception ex)
{
throw new Exception("GetMD5HashFromFile() fail,error:" + ex.Message);
}
}
public static void killMyself()
{
string bat = string.Format("@echo off \n ping -n 3 127.0.0.1 \n del {0}", System.Windows.Forms.Application.ExecutablePath);
File.WriteAllText("killme.bat", bat);
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = "killme.bat";
psi.Arguments = "\"" + Environment.GetCommandLineArgs()[0] + "\"";
psi.WindowStyle = ProcessWindowStyle.Hidden;
Process.Start(psi);
System.Environment.Exit(0);
//Application.Exit();
}
public static bool meIsMe(){
if (getSoftMD5().Substring(0,1) == SoftMD5)
{
return true;
}
else
{
return false;
}
}
public static string getMNum()
{
if (SoftMD5 == string.Empty)
{
SoftMD5 = getSoftMD5();
}
if (DiskVolume == string.Empty)
{
DiskVolume = getDiskVolume();
}
if (string.IsNullOrEmpty(CPUSerialNum))
{
CPUSerialNum = getCPUserialNum();
}
string strNum = SoftVersion + SoftMD5.Substring(0, 5) + CPUSerialNum.Substring(0, 5) + DiskVolume.Substring(0, 5);
return strNum;//18个注册字符
}
public static bool toRegist(string cipher)
{
try
{
if (CryptionHelper.VerifySigned(getMNum(), cipher, PublicKey))
{
return true;
}
else
{
return false;
}
}
catch (Exception e)
{
LogHelper.WriteLog(e);
return false;
}

}
public static void updateConfig(string name, string value)
{
Configuration cfa = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
cfa.AppSettings.Settings[name].Value = value;
cfa.Save();
ConfigurationManager.RefreshSection("appSettings");
}
}
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: