获取硬盘序列号及其API 
DWORD dwIDESerial; 
CString str; 
GetVolumeInformation("C:\\",NULL,NULL,&dwIDESerial,NULL,NULL,NULL,NULL); 
str.Format( "硬盘序列号: %X - %X",HIWORD(dwIDESerial),LOWORD(dwIDESerial)); 
AfxMessageBox(str); 其中的这个str的值就是硬盘序列号
我没用java试过,希望这个对你会有所帮助