CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

C#中如何获取一台计算机的机器码?

楼主lengfeng8866(公孙恋雪(专心学习WEB开发))2005-11-04 09:35:35 在 .NET技术 / 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

相关问题

  • 如何获取本机机器码,地区语言
  • 再过两天计算机的机器码也要被封杀了!
  • 怎样获取机器码,要求每台机器上都唯一.恳请帮忙!
  • 深入机器码...
  • 关于在 C/C++ 的内联汇编中直接插入机器码的问题.
  • 如何在C#中获取当前计算机的物理内存大小
  • 生成机器码问题。
  • 如何取得机器码?
  • 如何更改机器码
  • 请教:既然每条汇编代码都对应着一条机器指令,那为什么不能通过机器码获取微软源代码?

关键词

  • win32
  • 计算机
  • 安装
  • 软件
  • 用户
  • 操作系统
  • 机器码
  • tmpuint
  • 获取
  • managementobjectsearcher

得分解答快速导航

  • 帖主:lengfeng8866
  • q_po_o
  • SqlDataAdapter
  • uumlwy
  • wyc_net2004
  • cestar2005
  • jxufewbt
  • Johnny_de
  • luoboqingcai
  • fanslife
  • yishan116

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo