硬件
参数
(
如硬盘序列号,网卡序列号等等
)
,再通过一系列算
法而得到了一个唯一标识,
其实我们也可以通过一个
api
函数生成我们的唯一标识,
由于硬
盘人人都有,而网卡不一定每个人都有,所以以读硬盘序列号为例,
下面就先介绍一下我们要用到的
api
函数
BOOL GetVolumeInformation(
LPCTSTR lpRootPathName,
//
硬盘的路径
LPTSTR lpVolumeNameBuffer,
//
硬盘的卷标
DWORD nVolumeNameSize,
//
卷标的字符串长度
LPDWORD lpVolumeSerialNumber,
//
硬盘的序列号
LPDWORD lpMaximumComponentLength, //
最大的文件长度
LPDWORD lpFileSystemFlags,
//
文件系统的一此标志
LPTSTR lpFileSystemNameBuffer,
//
存储所在盘符的分区类型的长指针变量
DWORD nFileSystemNameSize
//
分区类型的长指针变量所指向的字符串长
度
);
如果上述函数成功就返回一个非
0
值。
光说不做,是不行了,我们还得实践一下:
//
最大的文件长度
首选用
MFC AppWizard
建立一个基于
Dialog base
的对话框工程,名为
GetHardID
,
点击
finish
。
加一个按钮,双击它,点击
ok,
并在对应的函数中加入如下代码:
LPCTSTR lpRootPathName="c:\\"; //
取
C
盘
LPTSTR lpVolumeNameBuffer=new char[12];//
磁盘卷标
DWORD nVolumeNameSize=12;//
卷标的字符串长度
DWORD VolumeSerialNumber;//
硬盘序列号
DWORD MaximumComponentLength;//
最大的文件长度
LPTSTR lpFileSystemNameBuffer=new char[10];//
存储所在盘符的分区类型的长