c/c++/vc/汇编 求助一个可以获得硬件ID号什么的方法

来源:百度知道 编辑:UC知道 时间:2024/06/04 19:55:48
比如硬盘ID,CPUID什么的,我弄了几个方法,都不好用
一旦对磁盘进行format信息就变了
如果分区相同的两个硬盘,取得的值相同

首选用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];// 存储所在盘符的分区类型的长指针变量
DWORD nFileSystemNameSize=10;// 分区类型的长指针变量所指向的字符串长度
DWORD FileSystemFlags;// 文件系统的一此标志
::GetVolumeInformation(lpRootPathName,
lpVolumeNameBuffer, nVolumeNameSize,
&VolumeSerialNumber, &MaximumComponentLength,
&FileSystemFlags,
lpFileSystemNameBuffer, nFileSystemNameSize);

CString str;
str.Format("Seria Num is %lx ",VolumeSerialNumber);
AfxMessageBox(str);