有没有读硬盘ID号api 取cpu序列号号之类的API,是什么,怎么用

标识机器唯一的方法讨论及得到硬盘序列号的方法.
标识机器唯一的方法讨论及得到硬盘序列号的方法.
一般来说标识机器的唯一ID会使用MAC地址.这个信息也很好取到.但考虑到目前的机器使用无线上网的很多,网卡的变动相对较为频繁.所以不太想用MAC地址作为标识.于是探索是否有其他唯一的标识可以使用.
首先考虑到硬盘,因为如果系统是安装在硬盘上的,如果系统换了,那应该可以视为另外一台机器.
那么硬盘中什么信息是唯一的呢.搜索到有人使用卷标.硬盘的卷标只有在格式化或分区的时候会被改变,而且重复的概率很低.那么使用此参数应该是可以.
于是啪啪啪的就实现了.结果发现公司好几台机器的系统盘卷标是一样的.大概使用同一镜像盘安装的系统卷标都是相同的.于是此方法作废.
那么硬盘是否有唯一标识呢?.
硬盘分为 ATA 和 SCSI 两种接口模式.当然,普通用户使用的 IDE 或 SATA 都是 ATA 的子集.
在ATA标准中有个序列号可以使用.在ATA7后似乎还有个world wide number.但由于没有细查并且低版本的硬盘不支持,所以还是选择序列号作为唯一标识.
ATA 和 SCSI 需要用不同的方式获得其信息.
原理介绍到这.代码如下.
[cpp] #include&&Windows.h&&&//&IOCTL控制码&//&&&#define&DFP_SEND_DRIVE_COMMAND&CTL_CODE(IOCTL_DISK_BASE,&0x0021,&METHOD_BUFFERED,&FILE_READ_ACCESS&|&FILE_WRITE_ACCESS)&//&&&#define&DFP_RECEIVE_DRIVE_DATA&CTL_CODE(IOCTL_DISK_BASE,&0x0022,&METHOD_BUFFERED,&FILE_READ_ACCESS&|&FILE_WRITE_ACCESS)&&&#define&FILE_DEVICE_SCSI&0x0000001B&&&#define&IOCTL_SCSI_MINIPORT_IDENTIFY&((FILE_DEVICE_SCSI&&&&16)&+&0x0501)&&&#define&IOCTL_SCSI_MINIPORT&0x&&&//&see&NTDDSCSI.H&for&definition&&&//&ATA/ATAPI指令&&&#define&IDE_ATA_IDENTIFY&0xEC&&&&&typedef&struct&_IDINFO&&&{&&&&&&USHORT&wGenC&//&WORD&0:&基本信息字&&&&&&&USHORT&wNumC&//&WORD&1:&柱面数&&&&&&&USHORT&wReserved2;&//&WORD&2:&保留&&&&&&&USHORT&wNumH&//&WORD&3:&磁头数&&&&&&&USHORT&wReserved4;&//&WORD&4:&保留&&&&&&&USHORT&wReserved5;&//&WORD&5:&保留&&&&&&&USHORT&wNumSectorsPerT&//&WORD&6:&每磁道扇区数&&&&&&&USHORT&wVendorUnique[3];&//&WORD&7-9:&厂家设定值&&&&&&&CHAR&sSerialNumber[20];&//&WORD&10-19:序列号&&&&&&&USHORT&wBufferT&//&WORD&20:&缓冲类型&&&&&&&USHORT&wBufferS&//&WORD&21:&缓冲大小&&&&&&&USHORT&wECCS&//&WORD&22:&ECC校验大小&&&&&&&CHAR&sFirmwareRev[8];&//&WORD&23-26:&固件版本&&&&&&&CHAR&sModelNumber[40];&//&WORD&27-46:&内部型号&&&&&&&USHORT&wMoreVendorU&//&WORD&47:&厂家设定值&&&&&&&USHORT&wReserved48;&//&WORD&48:&保留&&&&&&&struct&{&USHORT&reserved1:8;&USHORT&DMA:1;&//&1=支持DMA&&&&&&&USHORT&LBA:1;&//&1=支持LBA&&&&&&&USHORT&DisIORDY:1;&//&1=可不使用IORDY&&&&&&&USHORT&IORDY:1;&//&1=支持IORDY&&&&&&&USHORT&SoftReset:1;&//&1=需要ATA软启动&&&&&&&USHORT&Overlap:1;&//&1=支持重叠操作&&&&&&&USHORT&Queue:1;&//&1=支持命令队列&&&&&&&USHORT&InlDMA:1;&//&1=支持交叉存取DMA&&&&&&&}&wC&&&&&&&//&WORD&49:&一般能力&&&&&&&USHORT&wReserved1;&//&WORD&50:&保留&&&&&&&USHORT&wPIOT&//&WORD&51:&PIO时序&&&&&&USHORT&wDMAT&//&WORD&52:&DMA时序&&&&&&&struct&{&&&&&&&&&&&USHORT&CHSNumber:1;&//&1=WORD&54-58有效&&&&&&&&&&&USHORT&CycleNumber:1;&//&1=WORD&64-70有效&&&&&&&&&&&USHORT&UnltraDMA:1;&//&1=WORD&88有效&&&&&&&&&&&USHORT&reserved:13;&&&&&&&}&wFieldV&//&WORD&53:&后续字段有效性标志&&&&&&&USHORT&wNumCurC&//&WORD&54:&CHS可寻址的柱面数&&&&&&&USHORT&wNumCurH&//&WORD&55:&CHS可寻址的磁头数&&&&&&&USHORT&wNumCurSectorsPerT&//&WORD&56:&CHS可寻址每磁道扇区数&&&&&&&USHORT&wCurSectorsL&//&WORD&57:&CHS可寻址的扇区数低位字&&&&&&&USHORT&wCurSectorsH&//&WORD&58:&CHS可寻址的扇区数高位字&&&&&&&struct&{&&&&&&&&&&&USHORT&CurNumber:8;&//&当前一次性可读写扇区数&&&&&&&&&&&USHORT&Multi:1;&//&1=已选择多扇区读写&&&&&&&&&&&USHORT&reserved1:7;&&&&&&&}&wMultSectorS&&&&&&&&&//&WORD&59:&多扇区读写设定&&&&&&&ULONG&dwTotalS&//&WORD&60-61:&LBA可寻址的扇区数&&&&&&&USHORT&wSingleWordDMA;&//&WORD&62:&单字节DMA支持能力&&&&&&&&&struct&{&&&&&&&&&&&USHORT&Mode0:1;&//&1=支持模式0&(4.17Mb/s)&&&&&&&&&&&USHORT&Mode1:1;&//&1=支持模式1&(13.3Mb/s)&&&&&&&&&&&USHORT&Mode2:1;&//&1=支持模式2&(16.7Mb/s)&&&&&&&&&&&USHORT&Reserved1:5;&USHORT&Mode0Sel:1;&//&1=已选择模式0&&&&&&&&&&&USHORT&Mode1Sel:1;&//&1=已选择模式1&&&&&&&&&&&USHORT&Mode2Sel:1;&//&1=已选择模式2&&&&&&&&&&&USHORT&Reserved2:5;&&&&&&&}&wMultiWordDMA;&//&WORD&63:&多字节DMA支持能力&&&&&&&&&struct&{&&&&&&&&&&&USHORT&AdvPOIModes:8;&//&支持高级POI模式数&&&&&&&&&&&USHORT&reserved:8;&&&&&&&}&wPIOC&//&WORD&64:&高级PIO支持能力&&&&&&&&&USHORT&wMinMultiWordDMAC&//&WORD&65:&多字节DMA传输周期的最小值&&&&&&&&&USHORT&wRecMultiWordDMAC&//&WORD&66:&多字节DMA传输周期的建议值&&&&&&&USHORT&wMinPIONoFlowC&//&WORD&67:&无流控制时PIO传输周期的最小值&&&&&&&USHORT&wMinPOIFlowC&//&WORD&68:&有流控制时PIO传输周期的最小值&&&&&&&USHORT&wReserved69[11];&//&WORD&69-79:&保留&&&&&&&&&struct&&&&&&&{&&&&&&&&&&&USHORT&Reserved1:1;&&&&&&&&&&&USHORT&ATA1:1;&//&1=支持ATA-1&&&&&&&&&&&USHORT&ATA2:1;&//&1=支持ATA-2&&&&&&&&&&&USHORT&ATA3:1;&//&1=支持ATA-3&&&&&&&&&&&USHORT&ATA4:1;&//&1=支持ATA/ATAPI-4&&&&&&&&&&&USHORT&ATA5:1;&//&1=支持ATA/ATAPI-5&&&&&&&&&&&USHORT&ATA6:1;&//&1=支持ATA/ATAPI-6&&&&&&&&&&&USHORT&ATA7:1;&//&1=支持ATA/ATAPI-7&&&&&&&&&&&USHORT&ATA8:1;&//&1=支持ATA/ATAPI-8&&&&&&&&&&&USHORT&ATA9:1;&//&1=支持ATA/ATAPI-9&&&&&&&&&&&USHORT&ATA10:1;&//&1=支持ATA/ATAPI-10&&&&&&&&&&&USHORT&ATA11:1;&//&1=支持ATA/ATAPI-11&&&&&&&&&&&USHORT&ATA12:1;&//&1=支持ATA/ATAPI-12&&&&&&&&&&&USHORT&ATA13:1;&//&1=支持ATA/ATAPI-13&&&&&&&&&&&USHORT&ATA14:1;&//&1=支持ATA/ATAPI-14&&&&&&&&&&&USHORT&Reserved2:1;&&&&&&&}&wMajorV&//&WORD&80:&主版本&&&&&&&&&USHORT&wMinorV&//&WORD&81:&副版本&&&&&&&USHORT&wReserved82[6];&//&WORD&82-87:&保留&&&&&&&&&struct&&&&&&&{&&&&&&&&&&&USHORT&Mode0:1;&//&1=支持模式0&(16.7Mb/s)&&&&&&&&&&&USHORT&Mode1:1;&//&1=支持模式1&(25Mb/s)&&&&&&&&&&&USHORT&Mode2:1;&//&1=支持模式2&(33Mb/s)&&&&&&&&&&&USHORT&Mode3:1;&//&1=支持模式3&(44Mb/s)&&&&&&&&&&&USHORT&Mode4:1;&//&1=支持模式4&(66Mb/s)&&&&&&&&&&&USHORT&Mode5:1;&//&1=支持模式5&(100Mb/s)&&&&&&&&&&&USHORT&Mode6:1;&//&1=支持模式6&(133Mb/s)&&&&&&&&&&&USHORT&Mode7:1;&//&1=支持模式7&(166Mb/s)&???&&&&&&&&&&&USHORT&Mode0Sel:1;&//&1=已选择模式0&&&&&&&&&&&USHORT&Mode1Sel:1;&//&1=已选择模式1&&&&&&&&&&&USHORT&Mode2Sel:1;&//&1=已选择模式2&&&&&&&&&&&USHORT&Mode3Sel:1;&//&1=已选择模式3&&&&&&&&&&&USHORT&Mode4Sel:1;&//&1=已选择模式4&&&&&&&&&&&USHORT&Mode5Sel:1;&//&1=已选择模式5&&&&&&&&&&&USHORT&Mode6Sel:1;&//&1=已选择模式6&&&&&&&&&&&USHORT&Mode7Sel:1;&//&1=已选择模式7&&&&&&&}&wUltraDMA;&&&&&&&&&//&WORD&88:&Ultra&DMA支持能力&&&&&&&USHORT&wReserved89[167];&//&WORD&89-255&&&}&IDINFO,&*PIDINFO;&&&&//&SCSI驱动所需的输入输出共用的结构&&&&&typedef&struct&_SRB_IO_CONTROL&&&{&&&&&&&ULONG&HeaderL&//&头长度&&&&&&&UCHAR&Signature[8];&//&特征名称&&&&&&ULONG&T&//&超时时间&&&&&&&ULONG&ControlC&//&控制码&&&&&&&ULONG&ReturnC&//&返回码&&&&&&&ULONG&L&//&缓冲区长度&&&&&}&SRB_IO_CONTROL,&*PSRB_IO_CONTROL;&&&&&&&//&打开设备&//&filename:&设备的“文件名”(设备路径)&&&HANDLE&OpenDevice(LPCTSTR&filename)&&&{&&&&&&&HANDLE&hD&//&打开设备&&&&&&&hDevice&=&::CreateFile(filename,&//&文件名&&&&&&&&&&&GENERIC_READ&|&GENERIC_WRITE,&//&读写方式&&&&&&&&&&FILE_SHARE_READ&|&FILE_SHARE_WRITE,&//&共享方式&&&&&&&&&&&NULL,&//&默认的安全描述符&&&&&&&&&&&OPEN_EXISTING,&//&创建方式&&&&&&&&&&&0,&//&不需设置文件属性&&&&&&&&&&&NULL);&&//&不需参照模板文件&&&&&&&return&hD&&}&&//&向驱动发“IDENTIFY&DEVICE”命令,获得设备信息&//&hDevice:&设备句柄&//&pIdInfo:&设备信息结构指针&&&BOOL&IdentifyDevice(HANDLE&hDevice,&PIDINFO&pIdInfo)&&&{&&&&&&&PSENDCMDINPARAMS&pSCIP;&//&输入数据结构指针&&&&&&&PSENDCMDOUTPARAMS&pSCOP;&//&输出数据结构指针&&&&&&&DWORD&dwOutB&//&IOCTL输出数据长度&&&&&&&BOOL&bR&//&IOCTL返回值&//&申请输入/输出数据结构空间&&&&&&&pSCIP&=&(PSENDCMDINPARAMS)::GlobalAlloc(LMEM_ZEROINIT,&sizeof(SENDCMDINPARAMS)&-&1);&&&&&&&pSCOP&=&(PSENDCMDOUTPARAMS)::GlobalAlloc(LMEM_ZEROINIT,&sizeof(SENDCMDOUTPARAMS)&+&sizeof(IDINFO)&-&1);&//&指定ATA/ATAPI命令的寄存器值&//&&&&&&&pSCIP-&irDriveRegs.bFeaturesReg&=&0;&//&&&&&&&pSCIP-&irDriveRegs.bSectorCountReg&=&0;&//&&&&&&&pSCIP-&irDriveRegs.bSectorNumberReg&=&0;&//&&&&&&&pSCIP-&irDriveRegs.bCylLowReg&=&0;&//&&&&&&&pSCIP-&irDriveRegs.bCylHighReg&=&0;&//&&&&&&&pSCIP-&irDriveRegs.bDriveHeadReg&=&0;&pSCIP-&irDriveRegs.bCommandReg&=&IDE_ATA_IDENTIFY;&//&指定输入/输出数据缓冲区大小&IDENTIFY&DEVICE&&&&&&pSCIP-&cBufferSize&=&0;&pSCOP-&cBufferSize&=&sizeof(IDINFO);&//&&&&&&&bResult&=&::DeviceIoControl(hDevice,&//&设备句柄&&&&&&&&&&&DFP_RECEIVE_DRIVE_DATA,&//&指定IOCTL&&&&&&&&&&&pSCIP,&sizeof(SENDCMDINPARAMS)&-&1,&//&输入数据缓冲区&&&&&&&&&&&pSCOP,&sizeof(SENDCMDOUTPARAMS)&+&sizeof(IDINFO)&-&1,&//&输出数据缓冲区&&&&&&&&&&&&dwOutBytes,&//&输出数据长度&&&&&&&&&&&(LPOVERLAPPED)NULL);&//&用同步I/O&//&复制设备参数结构&&&&&&&::memcpy(pIdInfo,&pSCOP-&bBuffer,&sizeof(IDINFO));&//&释放输入/输出数据空间&&&&&&&::GlobalFree(pSCOP);&::GlobalFree(pSCIP);&return&bR&&&}&&&&&//&向SCSI&MINI-PORT驱动发“IDENTIFY&DEVICE”命令,获得设备信息&//&hDevice:&设备句柄&//&pIdInfo:&设备信息结构指针&&&BOOL&IdentifyDeviceAsScsi(HANDLE&hDevice,&int&nDrive,&PIDINFO&pIdInfo)&&&{&&&&&&&PSENDCMDINPARAMS&pSCIP;&//&输入数据结构指针&&&&&&&PSENDCMDOUTPARAMS&pSCOP;&//&输出数据结构指针&&&&&&&PSRB_IO_CONTROL&pSRBIO;&//&SCSI输入输出数据结构指针&&&&&&&DWORD&dwOutB&//&IOCTL输出数据长度&&&&&&&BOOL&bR&//&IOCTL返回值&&&&&&&//&申请输入/输出数据结构空间&&&&&&&pSRBIO&=&(PSRB_IO_CONTROL)::GlobalAlloc(LMEM_ZEROINIT,&sizeof(SRB_IO_CONTROL)&+&sizeof(SENDCMDOUTPARAMS)&+&sizeof(IDINFO)&-&1);&&&&&&&pSCIP&=&(PSENDCMDINPARAMS)((char&*)pSRBIO&+&sizeof(SRB_IO_CONTROL));&&&&&&&pSCOP&=&(PSENDCMDOUTPARAMS)((char&*)pSRBIO&+&sizeof(SRB_IO_CONTROL));&&&&&&&//&填充输入/输出数据&&&&&&&pSRBIO-&HeaderLength&=&sizeof(SRB_IO_CONTROL);&pSRBIO-&Timeout&=&10000;&&&&&&pSRBIO-&Length&=&sizeof(SENDCMDOUTPARAMS)&+&sizeof(IDINFO)&-&1;&&&&&&&pSRBIO-&ControlCode&=&IOCTL_SCSI_MINIPORT_IDENTIFY;&::strncpy&((char&*)pSRBIO-&Signature,&"SCSIDISK",&8);&&&&&&&//&指定ATA/ATAPI命令的寄存器值&//&&&&&&&pSCIP-&irDriveRegs.bFeaturesReg&=&0;&//&&&&&&&pSCIP-&irDriveRegs.bSectorCountReg&=&0;&//&&&&&&&pSCIP-&irDriveRegs.bSectorNumberReg&=&0;&//&&&&&&&pSCIP-&irDriveRegs.bCylLowReg&=&0;&//&&&&&&&pSCIP-&irDriveRegs.bCylHighReg&=&0;&//&&&&&&&pSCIP-&irDriveRegs.bDriveHeadReg&=&0;&pSCIP-&irDriveRegs.bCommandReg&=&IDE_ATA_IDENTIFY;&pSCIP-&bDriveNumber&=&nD&&&&&&&//IDENTIFY&DEVICE&&&&&&&&bResult&=&::DeviceIoControl(hDevice,&//&设备句柄&&&&&&&&&&&IOCTL_SCSI_MINIPORT,&//&指定IOCTL&&&&&&&&&&&pSRBIO,&sizeof(SRB_IO_CONTROL)&+&sizeof(SENDCMDINPARAMS)&-&1,&//&输入数据缓冲区&&&&&&&&&&&pSRBIO,&sizeof(SRB_IO_CONTROL)&+&sizeof(SENDCMDOUTPARAMS)&+&sizeof(IDINFO)&-&1,&//&输出数据缓冲区&&&&&&&&&&&&dwOutBytes,&//&输出数据长度&&&&&&&&&&&(LPOVERLAPPED)NULL);&//&用同步I/O&//&复制设备参数结构&&&&&&&::memcpy(pIdInfo,&pSCOP-&bBuffer,&sizeof(IDINFO));&&&&&&&//&释放输入/输出数据空间&&&&&&&::GlobalFree(pSRBIO);&return&bR&&&}&&&//&将串中的字符两两颠倒&//&原因是ATA/ATAPI中的WORD,与Windows采用的字节顺序相反&//&驱动程序中已经将收到的数据全部反过来,我们来个负负得正&&&void&AdjustString(char*&str,&int&len)&&&{&&&&&&&char&&int&i;&&&&&&&//&两两颠倒&&&&&&&for&(i&=&0;&i&&&&i&+=&2)&&&&&&&{&&&&&&&&&&ch&=&str[i];&&&&&&&&&&&str[i]&=&str[i&+&1];&&&&&&&&&&&str[i&+&1]&=&&&&&&&&}&&&&&&&&//&若是右对齐的,调整为左对齐&(去掉左边的空格)&&&&&&&i&=&0;&&&&&&&while&((i&&&len)&&&&(str[i]&==&'&'))&&&&&&&&&&&i++;&&&&&&&&&char&&&&szBuff[MAX_PATH];&&&&&&ZeroMemory(&szBuff,&MAX_PATH&);&&&&&&::memmove(szBuff,&&str[i],&len&-&i);&&&&&&&//&去掉右边的空格&&&&&&i&=&len&-&1;&&&&&&&while&((i&&=&0)&&&&(szBuff[i]&==&'&'))&&&&&&&{&&&&&&&&&&&szBuff[i]&=&'\0';&&&&&&&&&&&i--;&&&&&&&}&&&&&&&&&ZeroMemory(&str,&len&);&&&&&&memcpy(&str,&szBuff,&len&);&&&&&&&&&&}&&&//&读取IDE硬盘的设备信息,必须有足够权限&//&nDrive:&驱动器号(0=第一个硬盘,1=0=第二个硬盘,......)&//&pIdInfo:&设备信息结构指针&&&BOOL&GetPhysicalDriveInfoInNT(int&nDrive,&PIDINFO&pIdInfo)&&&{&&&&&&&HANDLE&hD&//&设备句柄&&&&&&&BOOL&bR&//&返回结果&&&&&&&char&szFileName[20];&//&文件名&&&&&&&::sprintf(szFileName,"\\\\.\\PhysicalDrive%d",&nDrive);&&&&&&&hDevice&=&::OpenDevice(szFileName);&if&(hDevice&==&INVALID_HANDLE_VALUE)&{&return&FALSE;&}&&&&&&&//IDENTIFY&DEVICE&&&&&&&&bResult&=&::IdentifyDevice(hDevice,&pIdInfo);&if&(bResult)&&&&&&&{&&&&&&&&&&&//&调整字符串&&&&&&&&&&&::AdjustString(pIdInfo-&sSerialNumber,&20);&&&&&&&&&&&::AdjustString(pIdInfo-&sModelNumber,&40);&&&&&&&&&&&::AdjustString(pIdInfo-&sFirmwareRev,&8);&&&&&&&}&&&&&&&::CloseHandle&(hDevice);&return&bR&&&}&&&//&用SCSI驱动读取IDE硬盘的设备信息,不受权限制约&//&nDrive:&驱动器号(0=Primary&Master,&1=Promary&Slave,&2=Secondary&master,&3=Secondary&slave)&//&pIdInfo:&设备信息结构指针&&&BOOL&GetIdeDriveAsScsiInfoInNT(int&nDrive,&PIDINFO&pIdInfo)&&&{&&&&&&&HANDLE&hD&//&设备句柄&&&&&&&BOOL&bR&//&返回结果&&&&&&&char&szFileName[20];&//&文件名&&&&&&&::sprintf(szFileName,"\\\\.\\Scsi%d:",&nDrive/2);&&&&&&&hDevice&=&::OpenDevice(szFileName);&if&(hDevice&==&INVALID_HANDLE_VALUE)&{&return&FALSE;&}&&&&&&&//&IDENTIFY&DEVICE&&&&&&&bResult&=&::IdentifyDeviceAsScsi(hDevice,&nDrive%2,&pIdInfo);&//&检查是不是空串&&&&&&&if&(pIdInfo-&sModelNumber[0]&==&'\0')&&&&&&&{&&&&&&&&&&bResult&=&FALSE;&&&&&&&}&&&&&&&if&(bResult)&&&&&&&{&&&&&&&&&&&//&调整字符串&&&&&&&&&&&::AdjustString(pIdInfo-&sSerialNumber,&20);&&&&&&&&&&&::AdjustString(pIdInfo-&sModelNumber,&40);&&&&&&&&&&&::AdjustString(pIdInfo-&sFirmwareRev,&8);&&&&&&&}&&&&&&&return&bR&&&}&&&&int&main&(int&argc,&char&*&argv&[])&&{&&&&&&char&sz[255];&&&&&&IDINFO&&kI&&&&&&GetPhysicalDriveInfoInNT(&0,&&kInfo&);&&}&&
以上代码在win7上运行成功.其他系统未经试验.
见鬼了!都说是唯一,我怎么就遇到重复了!Re:
回复syhzk:哦??我看过不少机器.有读不出来的.比如说虚拟机或无盘.但没遇到过相同的.运行环境是怎样的??
发表评论:
馆藏&21040
TA的最新馆藏本文标签:, , ,
您可能还会对这些文章感兴趣!查看: 3503|回复: 7
如何读取本机的硬盘ID号以及CPU序列号
阅读权限50
高级会员, 积分 731, 距离下一级还需 69 积分
如题!& &我从网络上看到说用读取注册表的消息。& &可如何知道相应的键值是多少??
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限150
获取磁盘序列号:
#include&iostream&
#include&windows.h&
void main()
& & & & LPCTSTR lpRootPathName=&C:\\&;
& & & & LPTSTR lpVolumeNameBuffer=new char[12];
& & & & DWORD nVolumeNameSize=12;
& & & & DWORD lpVolumeSerialN
& & & & DWORD lpMaximumComponentL
& & & & LPTSTR lpFileSystemNameBuffer=new char[10];
& & & & DWORD nFileSystemNameSize=10;
& & & & DWORD lpFileSystemF
& & & & GetVolumeInformation(
& & & & & & & & lpRootPathName,
& & & & & & & & lpVolumeNameBuffer,
& & & & & & & & nVolumeNameSize,
& & & & & & & & &lpVolumeSerialNumber,
& & & & & & & & &lpMaximumComponentLength,
& & & & & & & & &lpFileSystemFlags,
& & & & & & & & lpFileSystemNameBuffer,
& & & & & & & & nFileSystemNameSize
& & & & & & & & );
& & & & printf(&%lx\n&,lpVolumeSerialNumber);
& & & & cout&&lpVolumeSerialNumber&&
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限50
高级会员, 积分 731, 距离下一级还需 69 积分
夏雨秋 发表于
获取磁盘序列号:
这个代码你有试过吗?& & 怎么我获取的是空的字符串?
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限50
高级会员, 积分 731, 距离下一级还需 69 积分
我现在用汇编语句已经能获取到CPUID了。& &现在还不清楚如何获取主机名字,单位之类的信息。
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限150
xiaoxiaodianzi 发表于
这个代码你有试过吗?& & 怎么我获取的是空的字符串?
刚才又试了一次,&&确定可用
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
新手上路, 积分 26, 距离下一级还需 24 积分
获取CPU序列号需要汇编,硬盘序列号就比较简单了!
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限50
高级会员, 积分 731, 距离下一级还需 69 积分
夏雨秋 发表于
刚才又试了一次,&&确定可用
多谢各位仁兄热心的帮助,我已经找到相关的代码了。
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限20
注册会员, 积分 139, 距离下一级还需 11 积分
这个是分区的号,不是硬盘的id
发帖求助前要善用【】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
站长提醒 /2
本着让大家学习到更多更好的VC++编程技术,选择一个适合自己的方向发展下去。VC驿站从即日起招聘教程讲师,主要是VC++方向,可以涉及安全类、破解类、编程开发类等等。
期待您的加盟。。。
为了能给广大编程爱好者提供一个更好的学习交流平台,从即日起面向广大网友特举办《发原创得奖励》活动。Vip教程,驿站U盘,无线鼠标 免费送,礼品丰厚,赶快来参加吧!
VC驿站微信公众号cctry2009
Powered by Discuz! X3.2}

我要回帖

更多关于 硬盘序列号 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信