用NIC和硬盘序列号实现软件的网络注册机制

简介:

PJSECURE 是一个 C 风格的 Win32 动态链接库,利用它可以实现软件产品的网络拷贝注册功能。

通过调用 RCP 函数 UuidCreate 或 UuidCreateSequential 快速获取远端机器的网卡地址。

PJSECURE 中的导出函数根据两个信息来唯一确定某台计算机。第一个函数可以获取所装网卡的 NIC 地址,该地址是一个12位的数字,由网卡的生产厂商保证其唯一性。第二个函数返回机器 C 盘的序列号。有了着两个信息,就可以成功创建自己的软件注册机制。

源代码中包含 PJSECURE 的定义和实现以及一个测试该 DLL 的控制台程序。

支持 Unicode ,并且随源代码一起提供生成配置选项。 

API 参考:

GetNicAddress

BOOL GetNicAddress(LPTSTR pszNicAddress, UINT nBufSize);

参数

pszNicAddress 如果函数调用成功,用该参数保存 NIC 地址。

nBufSize pszNicAddress 参数的长度,至少应该为13 或更大。

注释

该函数获取客户机器上网卡的 NIC 地址。调用程序负责分配缓冲接收该地址。所有 NIC 地址为12字节长,所以调用该函数前应该分配至少13个字节以上的空间来容纳该地址。该函数在内部调用 RCP 函数 UuidCreate 或 UuidCreateSequential。这意味着代码不依赖所安装的任何专门的网络协议。如果函数调用成功返回 TRUE,否则返回 FALSE。

GetCDriveSerialNumber

BOOL GetCDriveSerialNumber(LPDWORD pdwSerialNumber);

参数

pdwSerialNumber DWORD 指针,它根据函数的返回值来接收“C”盘的序列号。

注释

如果函数调用成功返回 TRUE,否则返回 FALSE。pdwSerialNumber中的返回值可用“VOL”命令行命令显示出来。对于安全敏感程序,调用该函数可以作为一种次要手段来获得关于客户的确认性信息。

版权声明:

你可以在任何以二进制形式发布的产品(包括商业的、共享的、自由的或其它的)中包含此源代码

在不修改每个模块(*.h、*.cpp)最上方版权细则的前提下,你可以用任何方式修改源代码

如果你想要与自己的应用程序一起分发源代码,只允许分发作者最新发布的版本,以便保证源代码的出处是唯一的。

注意事项:

如果在 Windows 2000 上运行该程序,请用 UuidCreateSequential 调用替换 UuidCreate 调用。

本文配套源码

时间: 2024-11-01 10:01:02

用NIC和硬盘序列号实现软件的网络注册机制的相关文章

在.NET下获取硬盘序列号的问题

问题|硬盘 一般软件的注册机制可以通过获取硬件序列号,然后用非对称加密算法生成相应的公钥和私钥.但是用Managed Code写获取硬盘序列号的代码不能解决所有的问题,比如不能在非管理员的权限下使用,前几天Sunmast在他的Blog上发布了<如何得到硬盘序列号?.NET版本[C#]>,就是没有解决这个问题,用WMI也有很多问题. 要想顺利获取硬盘的序列号,目前只能依靠非托管代码了.DiskId32是一个源码公开的C++程序,可以解决上述问题.由于代码比较底层,我对VC和DDK不熟悉,没有能力

win7中vc++如何获取硬盘序列号

问题描述 win7中vc++如何获取硬盘序列号 我想获取win7下计算机硬盘的序列号,用来做软件加密,求各位大神帮帮忙啊!!!!!!! 解决方案 http://blog.163.com/jinfd@126/blog/static/6233227720133218314327/

C#应用:读取指定盘符的硬盘序列号

硬盘 using System;using System.IO;using System.Runtime.InteropServices;using System.Text;using Microsoft.Win32; namespace Wjb.ReadOrWriteIniAndReg{/**/////// 读取指定盘符的硬盘序列号///public class HardDiskVal{[DllImport("kernel32.dll")]private static extern

关于硬盘序列号的类

硬盘 using System;using System.IO;using System.Runtime.InteropServices;using System.Text;using Microsoft.Win32; namespace Wjb.ReadOrWriteIniAndReg{ /// <summary> /// HardDiskVal 的摘要说明. /// 读取指定盘符的硬盘序列号 /// 功能:读取指定盘符的硬盘序列号 /// </summary> public c

C#获取本机的MAC地址\序列号\硬盘序列号

1 /// <summary> 2 /// 显示MAC地址 3 /// </summary> 4 /// <returns></returns> 5 private string GetMAC() 6 { 7 string mac = "本机的MAC地址:"; 8 using (ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration&

使用C#获取CPU及硬盘序列号的源代码

首先需添加对System.Management的引用. view plaincopy to clipboardprint? using System;     using System.Runtime.InteropServices;     using System.Management;        namespace Hardware     {         /// <summary>         /// HardwareInfo 的摘要说明.         /// <

VC++获取网卡MAC、硬盘序列号、CPU ID、BIOS编号

  以下代码可以取得系统特征码(网卡MAC.硬盘序列号.CPU ID.BIOS编号)     BYTE szSystemInfo[4096]; // 在程序执行完毕后,此处存储取得的系统特征码     UINT uSystemInfoLen = 0; // 在程序执行完毕后,此处存储取得的系统特征码的长度     // 网卡 MAC 地址,注意: MAC 地址是可以在注册表中修改的     {         UINT uErrorCode=0;         IP_ADAPTER_INFO

java如何获取网卡MAC、硬盘序列号、CPU ID

问题描述 java如何获取网卡MAC.硬盘序列号.CPUID 解决方案 解决方案二:c:以下代码可以取得系统特征码(网卡MAC.硬盘序列号.CPUID.BIOS编号)BYTEszSystemInfo[4096];//在程序执行完毕后,此处存储取得的系统特征码UINTuSystemInfoLen=0;//在程序执行完毕后,此处存储取得的系统特征码的长度//网卡MAC地址,注意:MAC地址是可以在注册表中修改的{UINTuErrorCode=0;IP_ADAPTER_INFOiai;ULONGuSi

javascript 硬盘序列号+其它硬件信息_javascript技巧

看了看别的资料有提取CPU,MAC的现成代码却没有硬盘序列号,找了好久才找到提取硬盘序列号的参数.于是自己给补上了. <html> <head> <title>提取硬盘序列号</title> <script> function disk() {//硬盘序列号 信息 var locator = new ActiveXObject ("WbemScripting.SWbemLocator"); var service = loca