//HKEY_LOCAL_MACHINE//HARDWARE//DEVICEMAP//SERIALCOMM// HKEY hKey; int rtn; m_cmbComm.ResetContent(); rtn = RegOpenKeyEx( HKEY_LOCAL_MACHINE, "Hardware//DeviceMap//SerialComm", NULL, KEY_READ, &hKey); if( rtn == ERROR_SUCCESS) // 打开串口注册表 { int i=0; char portName[256], commName[256]; DWORD dwLong,dwSize; while(1) { dwSize = sizeof(portName); dwLong = dwSize; rtn = RegEnumValue( hKey, i, portName, &dwLong, NULL, NULL, (PUCHAR)commName, &dwSize ); if( rtn == ERROR_NO_MORE_ITEMS ) // 枚举串口 break; // commName就是串口名字 i++; } RegCloseKey(hKey); }