| 
				 3.1不正确的序列号 利用GetVolumeInformation获取的计算机硬盘卷序列号,不是正确的惟一序列号。 
void CWJGISApp::Register() 
{ 
   DWORD VolumeSerialNumber; 
   GetVolumeInformation("c:\\",NULL,NULL,&VolumeSerialNumber,NULL,NULL,NULL,NULL); 
   char charVolumeSerialNumber[10]; 
   itoa(VolumeSerialNumber,charVolumeSerialNumber,10); 
   CString strTemp; 
   strTemp.Format("%s",charVolumeSerialNumber);  
} 
该函数获取的序列号在硬盘格式化后会发生变化 
3.2 正确获取硬盘的序列号 
// 读取硬盘序列号函数 
char* CGetHDSerial::GetHDSerial() 
{    
  m_buffer[0]='\n'; 
  // 得到当前操作系统版本 
  OSVERSIONINFO OSVersionInfo; 
  OSVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); 
  GetVersionEx( &OSVersionInfo); 
  if (OSVersionInfo.dwPlatformId != VER_PLATFORM_WIN32_NT) 
  {    
      // Windows 9x/ME下读取硬盘序列号 
      WORD m_wWin9xHDSerial[256]; 
      Win9xReadHDSerial(m_wWin9xHDSerial);   
      strcpy (m_buffer, WORDToChar (m_wWin9xHDSerial, 10, 19)); 
  } 
  else 
  { 
      // Windows NT/2000/XP下读取硬盘序列号 
      DWORD m_wWinNTHDSerial[256];         // 判断是否有SCSI硬盘			
				 |