using System;
using System.Management;
using System.Security.Cryptography;
using System.IO;
using System.Collections.Generic;
using System.Text; namespace xingming_reg
{
class Program
{
static void Main(string[] args)
{
bool sucsess = false;
string computerbit = "";
regmutou reg = new regmutou();
computerbit = reg.getcomputerbit("X");
sucsess = reg.regmutousoft(computerbit, "xinmin", "xinmin.usr");
Console.WriteLine(sucsess);
Console.ReadLine();
}
}
internal class regmutou
{
// Methods
public string GetBIOSSerialNumber()
{
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_BIOS");
string str = "";
foreach (ManagementObject obj2 in searcher.Get())
{
str = obj2["SerialNumber"].ToString().Trim();
}
return str;
}
catch
{
return "";
}
} public string getcomputerbit(string softname)
{
string cpuID = this.GetCpuID();
string bIOSSerialNumber = this.GetBIOSSerialNumber();
string hardDiskSerialNumber = this.GetHardDiskSerialNumber();
string netCardMACAddress = this.GetNetCardMACAddress();
if (cpuID != "")
{
MD5 md = new MD5CryptoServiceProvider();
cpuID = BitConverter.ToString(md.ComputeHash(Encoding.Default.GetBytes(cpuID))).Replace("-", "").ToUpper().Substring(, 0x10);
return (softname + "C" + cpuID);
}
if (bIOSSerialNumber != "")
{
MD5 md2 = new MD5CryptoServiceProvider();
bIOSSerialNumber = BitConverter.ToString(md2.ComputeHash(Encoding.Default.GetBytes(bIOSSerialNumber))).Replace("-", "").ToUpper().Substring(, 0x10);
return (softname + "B" + bIOSSerialNumber);
}
if (hardDiskSerialNumber != "")
{
MD5 md3 = new MD5CryptoServiceProvider();
hardDiskSerialNumber = BitConverter.ToString(md3.ComputeHash(Encoding.Default.GetBytes(hardDiskSerialNumber))).Replace("-", "").ToUpper().Substring(, 0x10);
return (softname + "H" + hardDiskSerialNumber);
}
if (netCardMACAddress != "")
{
MD5 md4 = new MD5CryptoServiceProvider();
netCardMACAddress = BitConverter.ToString(md4.ComputeHash(Encoding.Default.GetBytes(netCardMACAddress))).Replace("-", "").ToUpper().Substring(, 0x10);
return (softname + "N" + netCardMACAddress);
}
return (softname + "WF53A419DB238BBAD");
} public string GetCpuID()
{
try
{
ManagementObjectCollection instances = new ManagementClass("Win32_Processor").GetInstances();
string str = null;
foreach (ManagementObject obj2 in instances)
{
str = obj2.Properties["ProcessorId"].Value.ToString();
break;
}
return str;
}
catch
{
return "";
}
} public string GetHardDiskSerialNumber()
{
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");
string str = "";
foreach (ManagementObject obj2 in searcher.Get())
{
str = obj2["SerialNumber"].ToString().Trim();
break;
}
return str;
}
catch
{
return "";
}
} public string GetNetCardMACAddress()
{
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapter WHERE ((MACAddress Is Not NULL) AND (Manufacturer <> 'Microsoft'))");
string str = "";
foreach (ManagementObject obj2 in searcher.Get())
{
str = obj2["MACAddress"].ToString().Trim();
}
return str;
}
catch
{
return "";
}
} public bool regmutousoft(string computerbit, string softname, string filename)
{
bool flag = true;
string str = "";
SHA1 sha = new SHA1CryptoServiceProvider();
str = BitConverter.ToString(sha.ComputeHash(Encoding.Default.GetBytes(softname))).Replace("-", "").ToUpper();
//if (!File.Exists(filename))
//{
// flag = false;
// Stream stream = File.Open(filename, FileMode.OpenOrCreate);
// StreamWriter writer = new StreamWriter(stream);
// writer.WriteLine(computerbit);
// writer.Close();
// stream.Close();
// return flag;
//}
//Stream stream2 = File.Open(filename, FileMode.Open);
//StreamReader reader = new StreamReader(stream2);
//string str2 = "";
string str3 = computerbit;
//while ((str2 = reader.ReadLine()) != null)
//{
// str3 = str2;
//}
//reader.Close();
//stream2.Close();
//if (str3.Length != 0x18)
//{
// //return false;
//}
SHA1 sha2 = new SHA1CryptoServiceProvider();
string str4 = BitConverter.ToString(sha2.ComputeHash(Encoding.Default.GetBytes(computerbit))).Replace("-", "").ToUpper();
string str5 = "";
for (int i = ; i < str4.Length; i++)
{
if ((i % ) == )
{
str5 = str5 + str4[i];
}
}
string str6 = "";
for (int j = ; j < str.Length; j++)
{
if ((j % ) == )
{
str6 = str6 + str[j];
}
}
int[] numArray = new int[];
for (int k = ; k < ; k++)
{
numArray[k] = str6[k] + str5[k];
numArray[k] = numArray[k] % 0x24;
}
string str7 = "";
for (int m = ; m < ; m++)
{
if ((m > ) && ((m % ) == ))
{
str7 = str7 + "-";
}
str7 = str7 + "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"[numArray[m]];
}
if (str3 == str7)
{
flag = true;
}
Console.WriteLine("机器码:" + str3);
Console.WriteLine("注册码:"+str7);
return flag;
}
}
}
            using System.Management;

            //Win32_NetworkAdapterConfiguration是WMI数据库中用来存放网络设备的信息表
ManagementObjectSearcher query = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled='TRUE'"); //ManagementObjectCollection对象用来存放查询结果
ManagementObjectCollection queryCollection = query.Get(); foreach (ManagementObject mo in queryCollection)
{
Console.WriteLine("Network Card:{0}", mo["Description"]);
Console.WriteLine("MAC Address:{0}", mo["MACAddress"]); //addresses, subnets和 defaultgateways 值都是可以包含多个值得数组.
//为了适应这种情况,为了适应这种情况,用户必须把结果分配到一个字符串数组,
//并再一次用foreach语句通过该字符串数组
string[] addresses = (string[])mo["IPAddress"];
string[] subnets = (string[])mo["IPSubnet"];
string[] defaultgateways = (string[])mo["DefaultIPGateway"]; //任何一个接口都可能有多个IP地址
foreach (string ipaddress in addresses)
{
Console.WriteLine("IP Address:{0}", ipaddress);
} foreach (string subnet in subnets)
{
Console.WriteLine("Subnet Mask:{0}", subnet);
} foreach (string defaultgateway in defaultgateways)
{
Console.WriteLine("Gateway:{0}", defaultgateway);
}
Console.WriteLine();
}

c#生成注册码的两种方法(mac地址与IP地址)的更多相关文章

  1. Python随机生成验证码的两种方法

    Python随机生成验证码的方法有很多,今天给大家列举两种,大家也可以在这个基础上进行改造,设计出适合自己的验证码方法方法一:利用range Python随机生成验证码的方法有很多,今天给大家列举两种 ...

  2. 使用Python生成源文件的两种方法

    利用Python的字符串处理模块,开发者能够编写脚本用来生成那些格式同样的C.C++.JAVA源程序.头文件和測试文件,从而避免大量的反复工作. 本文概述两种利用Python string类生成jav ...

  3. android获取Mac地址和IP地址

    获取Mac地址实际项目中测试了如下几种方法:(1)设备开通Wifi连接,获取到网卡的MAC地址(但是不开通wifi,这种方法获取不到Mac地址,这种方法也是网络上使用的最多的方法) //根据Wifi信 ...

  4. Sumblime Text2安装Package Control两种方法+安装插件+注册码

    刚开始不认识sumblime的时候,就直接在网上下载了一个最新版的sumblime text3,只是在配合使用go语言时,出现了一些不为自己知道的奇葩问题,于是果断把3卸载了,改成了sumblime ...

  5. JqueryMobile动态生成listView并实现刷新的两种方法

    本篇文章主要是对JqueryMobile动态生成listView并实现刷新的两种方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 JqueryMobile动态生成listView并实现刷新 ...

  6. WCF生成客户端代理对象的两种方法的解释

    最近在封装WCF,有一些很好的实践就记录下来,大家可以放心使用,所有代码都已经调试过.如果有高手可以大家探讨一下. 在WCF中有两种不同的方法可以用于创建客户端服务对象,他们分别为: 1. 代理构造法 ...

  7. c#封装DBHelper类 c# 图片加水印 (摘)C#生成随机数的三种方法 使用LINQ、Lambda 表达式 、委托快速比较两个集合,找出需要新增、修改、删除的对象 c# 制作正方形图片 JavaScript 事件循环及异步原理(完全指北)

    c#封装DBHelper类   public enum EffentNextType { /// <summary> /// 对其他语句无任何影响 /// </summary> ...

  8. PHP生成带logo图像二维码的两种方法

    本文主要和大家分享PHP生成带logo图像二维码的两种方法,主要以文字和代码的形式和大家分享,希望能帮助到大家. 一.利用Google API生成二维码Google提供了较为完善的二维码生成接口,调用 ...

  9. MySQL命令执行sql文件的两种方法

    MySQL命令执行sql文件的两种方法 摘要:和其他数据库一样,MySQL也提供了命令执行sql脚本文件,方便地进行数据库.表以及数据等各种操作.下面笔者讲解MySQL执行sql文件命令的两种方法,希 ...

随机推荐

  1. 转载---SQL Server XML基础学习<2>之--FOR XML AUTO/RAW

    本文主要介绍FOR XML 的 AUTO 模式和 RAW 模式 --AUTO 模式将查询结果以嵌套 XML 元素的方式返回.这不能较好地控制从查询结果生成的 XML 的形式. --如果要生成简单的层次 ...

  2. Windows Server 2008 计划任务配置(任务计划程序)每分钟执行BAT

    首先Windows Server 2008不同于其他服务器操作系统和Windows Server 2003有着很大的区别,计划任务的名称是“任务计划程序”不在控制面板里,而是在“管理工具”里. 由于服 ...

  3. objective-c中是如何实现线程同步的?

    多线程在各种编程语言中都是难点,很多语言中实现起来很麻烦,objective-c虽然源于c,但其多线程编程却相当简单,可以与java相媲美.这篇文章主要从线程创建与启动.线程的同步与锁.线程的交互.线 ...

  4. PHP & Javascript 如何对字符串中包含html标签进行编码 整理

    为什么要对字符串编码? 某些字符串中包含html标签,不编码,页面输出就乱了. PHP下怎么对字符串编码? htmlentities vs htmlspecialchars htmlentities ...

  5. linux强大IDE——Geany配置说明

    今天开始用Ubuntu了(主要是为了防止自己在windows下不自觉的打游戏之类的)   刚开始用的很不习惯  找不到合适的编译器(DEV c++什么时候才能出Linux的啊)  先后下了codeli ...

  6. 网站开发常用jQuery插件总结(十)菜单插件superfish

    网站对于菜单的依赖其实并不是很大,我们完全可以不使用菜单来设计网站,显示网站内容.但是如果网站的分类太多,“也许”使用菜单作为网站导航可以使 用户 更方便的寻找内容.superfish插件就是用于实现 ...

  7. 将数据库二进制图片导出显示到EPPlus Excel2007中

    1.EPPlus Excel 控件可以参考我的另一篇博客:http://blog.163.com/pei_huiping/blog/static/206573067201281810549984/ 这 ...

  8. 用javascript操作xml(三)关于Jquery的html()不兼容IE的解决办法

    当 $("#xxx").html(data); 不兼容,方法替换为 document.getElementById("xxx").innerHTML=data;

  9. echo和print语句

    在php中,有两种基本的输出方法:echo  和  print echo 和 print 之间的差异: echo——能够输出一个以上的字符串,无返回值 print——只能输出一个字符串,并始终返回值为 ...

  10. 设置Android程序的默认安装位置

    修改 AndroidManifest.xml 文件: <manifest xmlns:android="http://schemas.android.com/apk/res/andro ...