#include <iostream>
#include <Windows.h>
using namespace std;
int main(int argc,char* argv[])

...{
DWORD DiskSerial=0;
::GetVolumeInformation("c:/",NULL,NULL,&DiskSerial,NULL,NULL,NULL,NULL);
printf("c:/%X ",DiskSerial);
}
注:这里获得的是逻辑盘C的序列号,而不是硬盘的序列号
GetVolumeInformation API函数
BOOL GetVolumeInformation( char *lpRootPathName, //盘符如:c://或d://
char *lpVolumeNameBuffer, //盘符标卷存放的地址,可为NULL
DWORD nVolumeNameSize,//上地址的大小,可为NULL
DWORD *lpVolumeSerialNumber, //盘符序列号,可为NULL
DWORD *lpMaximumComponentLength,//盘符所支持的最长文件名,可NULL
DWORD *lpFileSystemFlags,//有无压缩、索引等,可NULL
char *lpFileSystemNameBuffer,//盘符的文件格式存放的地址,可NULL
DWORD nFileSystemNameSize //上地址的大小。可NULL
);