zoukankan      html  css  js  c++  java
  • 给软件增加注册功能 c#

    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 
     ping -n 3 127.0.0.1 
     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
  • 相关阅读:
    STP RSTP
    数组与文字处理
    3 算法、控制结构
    2 变量、运算符、位运算
    1
    小程序点击变换,
    小程序授权demo
    小程序获取参数
    小程序是否转发群还是个人(转发功能)
    小程序分享转发功能实现demo
  • 原文地址:https://www.cnblogs.com/lwngreat/p/5776500.html
Copyright © 2011-2022 走看看