在网上找了一段代码修改了一下,觉得还可以,传了!
void GetSystemPorts(const CComboBox &tempCombBox)
{
CRegKey RegKey;
int nCount = 0; //串口的个数
CString tempCStr;
if(RegKey.Open(HKEY_LOCAL_MACHINE, "Hardware//DeviceMap//SerialComm") == ERROR_SUCCESS)
{
while(true)
{
char ValueName[_MAX_PATH];
unsigned char ValueData[_MAX_PATH];
DWORD nValueSize = _MAX_PATH;
DWORD nDataSize = _MAX_PATH;
DWORD nType;
//RegEnumValue函数的作用是,从被指定打开的注册表项中列举所有的值
//这函数每调用一次就会拷贝一个索引值的名称和数据块
if(::RegEnumValue(HKEY(RegKey), nCount, ValueName, &nValueSize, NULL, &nType, ValueData, &nDataSize) == ERROR_NO_MORE_ITEMS)
{
break;
}
if(strlen((char*)ValueData))
{
tempCStr.Format("%s",ValueData);
tempCombBox.AddString(tempCStr);
}
nCount++;
}
}
}