C#中如何获取一台计算机的机器码?
试用版的软件总是会采取这样或那样的方式来限制用户的软件试用期。可如果想限制使用次数的话,怎么保证用户重装操作系统或格式化硬盘或重新对硬盘分区后,再安装试用软件时,也照样不能用呢?
我想到一个办法,就是学习一些软件的实现方式,获得用户计算机的机器码。可是还没有找到在C#中获取的方法。是使用API函数吗?还是已经有封装好的类库?还请各位大侠帮忙。。谢谢!!!
问题点数:80、回复次数:15Top
1 楼q_po_o(两个人)回复于 2005-11-04 09:51:00 得分 4
学习
up。。。Top
2 楼SqlDataAdapter(咸蛋超人)回复于 2005-11-04 09:56:31 得分 2
“用户重装操作系统或格式化硬盘或重新对硬盘分区后,再安装试用软件时,也照样不能用”
我觉得不可能吧,我以前的做法是写注册表,看高手来指点一下吧。Top
3 楼uumlwy(爱老婆)回复于 2005-11-04 10:17:09 得分 2
我看到注册表的window下有个ProductId不知道是不是Top
4 楼wyc_net2004(网络游侠)回复于 2005-11-04 10:26:58 得分 2
大哥还有重装操作系统也不能再使用的东西么?那它把用户的安装信息岂不是安装到引导区里了,有点夸张吧Top
5 楼cestar2005(往事随风)回复于 2005-11-04 10:51:08 得分 2
不可思议,反正我是没办法做到,除非像瑞星一样在线升级,这样利用网络就比较好控制了,单机你连盘都格了,区都分了,我实在想不出不能重用的理由Top
6 楼jxufewbt(我的目标是5星)回复于 2005-11-04 10:56:18 得分 2
帮顶!Top
7 楼Johnny_de(是的,当时就是这样的!)回复于 2005-11-04 10:59:20 得分 2
关注Top
8 楼lengfeng8866(公孙恋雪(专心学习WEB开发))回复于 2005-11-04 11:05:05 得分 0
不好意思,补充一下。使用的这个试用版的软件是要求安装软件的计算机必须能连上internet的。这样,就可以把用户的机器码存储在网站上对应的一个文件中。。每使用一次,通过网络访问网站的指定文件,对使用次数进行读写。。。Top
9 楼luoboqingcai(萝卜青菜)回复于 2005-11-04 11:08:20 得分 0
WMITop
10 楼luoboqingcai(萝卜青菜)回复于 2005-11-04 11:11:22 得分 60
//获取磁盘序列号
try
{
System.Management.ManagementObjectSearcher cmicWmi = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
System.UInt32 tmpUint32 = 0;
foreach(ManagementObject cmicWmiObj in cmicWmi.Get())
{
tmpUint32 = Convert.ToUInt32(cmicWmiObj["signature"].ToString());
}
this.textBox1.Text = tmpUint32.ToString();
this.gProgressBar1.Value ++;
}
catch(Exception ex1)
{
throw new Exception(ex1.ToString());
}
//获取cpu序列号
try
{
System.Management.ManagementObjectSearcher Wmi = new ManagementObjectSearcher("SELECT * FROM Win32_Processor");
string tmpUint32_1 = string.Empty;
foreach(ManagementObject WmiObj in Wmi.Get())
{
tmpUint32_1 =WmiObj["ProcessorId"].ToString();
}
this.textBox2.Text = tmpUint32_1;
this.gProgressBar1.Value ++;
}
catch(Exception ex2)
{
throw new Exception(ex2.ToString());
}Top
11 楼fanslife(雨枫)回复于 2005-11-04 11:19:51 得分 2
dingTop
12 楼lengfeng8866(公孙恋雪(专心学习WEB开发))回复于 2005-11-04 11:51:46 得分 0
已经解决。。谢谢大家的关注
可以通过WMI或者通过API或者读取RING3的方法。
http://www.51it.org/kaifa/dotnet/c/200508/26876.html 详细介绍了其中一种,且有源码(C#版的类库实现)Top
13 楼yishan116(哈哈)回复于 2005-11-04 11:58:09 得分 2
应该不可以的吧 ,可以就不麻烦了??Top
14 楼lengfeng8866(公孙恋雪(专心学习WEB开发))回复于 2005-11-04 12:00:15 得分 0
个人建议采用WMI兼容性不是很好,因为WIN98/ME系统的WMI有时会出现导常。。Top
15 楼lengfeng8866(公孙恋雪(专心学习WEB开发))回复于 2005-11-25 08:27:15 得分 0
看来没人关注这样菜的问题了,结帖算了!呵呵。。Top




