在c++builder中,如何获取计算机所有的串口资源

在c++builder中,怎么获取计算机所有的串口资源?
我用的是MSComm控件。。求大神们给点指示。。
------最佳解决方案--------------------
本帖最后由 ccrun 于 2012-04-12 17:55:22 编辑 从注册表中读取所有串口的信息并添加到ComboBox中:
#include <registry.hpp>
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    TRegistry *reg = new TRegistry;

    reg->RootKey = HKEY_LOCAL_MACHINE;
    reg->OpenKey("HARDWARE\\DEVICEMAP\\SERIALCOMM", true);
    cbxComlist->Sorted = false;
    reg->GetValueNames(cbxComlist->Items);

    cbxComlist->Items->BeginUpdate();
    for (int i=0; iItems->Count; i++)
        cbxComlist->Items->Strings[i] =
                reg->ReadString(cbxComlist->Items->Strings[i]);
    cbxComlist->Items->EndUpdate();
     
    delete reg;

    cbxComlist->Sorted = true;
}

以上代码中cbxComlist是一个ComboBox,用MSComm是打开一个指定的串口。
------其他解决方案--------------------
是电脑上所有的串口吗?

在注册表 HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM 里面
------其他解决方案--------------------
我也有 
HANDLE   h   =   INVALID_HANDLE_VALUE;
int ComValue;
//---------------------------------------
__fastcall TForm6::TForm6(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------
void __fastcall TForm6::FormCreate(TObject *Sender)
{
for(int   i=1;i <=12;i++)
{
AnsiString   comname   =   "\\\\.\\COM"   +   String(i);
h   =   ::CreateFile(   comname.c_str(),
                                          GENERIC_READ   
------其他解决方案--------------------
   GENERIC_WRITE, 
                                          0, 
                                          0, 
                                          OPEN_EXISTING, 
                                          FILE_ATTRIBUTE_NORMAL,