|
안녕하세요
현재 c++ builder 2009를 사용하고 있습니다.
xp에서는 초기 실행시 현재 레지스트리에 등록된 com port를 인식하는데 문제없으나
win7에서는 인식하지 못하네요 권한상승이 필요한 것 같은데 방법을 잘 모르겠어요(xp,win7 혼용 사용)
참고로 소스 아래에 첨부드립니다.
급한데 쉽게 권한 상승시키는 방법이 없을까요??
void __fastcall TForm1::FormCreate(TObject *Sender){
Form1->Left = 100;
Form1->Top = 50;
ProgressBar = new TProgressBar(StatusBar1);
ProgressBar->Parent = StatusBar1;
ProgressBar->Position = 0;
ProgressBar->Visible = false;
TStringList *portlist=new TStringList;
TRegistry *reg = new TRegistry;
try{
reg->RootKey = HKEY_LOCAL_MACHINE;
reg->OpenKey("HARDWARE\\DEVICEMAP\\SERIALCOMM", true);
reg->GetValueNames(portlist);
Memo1->Clear();
if ( portlist->Count == 0 ){
ShowMessage("SerialPort doesn't installed");
reg->CloseKey();
return;
}
ComboBox1->Items->Add("Auto");
number_of_port = portlist->Count;
sprintf(sBuf,"Number of port is %d", number_of_port);
Form1->Memo1->Lines->Add(sBuf);
for(int i=0;i<portlist->Count;i++){
if ( portlist->Strings[i].SubString(2,6) != "Device" ){
number_of_port--; // 시리얼포트가 아닌 놈들은 삭제
continue;
}
ComboBox1->Items->Add(reg->ReadString(portlist->Strings[i]));
Memo1->Lines->Add(portlist->Strings[i]);
Memo1->Lines->Add(reg->ReadString(portlist->Strings[i]));
}
reg->CloseKey();
}
__finally{
delete reg;
delete portlist;
}
ComboBox1->ItemIndex = 0;
step_timer = TSTEP_INIT ;
sprintf(sBuf,"Number of port is %d", number_of_port);
Form1->Memo1->Lines->Add(sBuf);
circ_head = 0;
circ_tail = 0;
if ((hComThread = CreateThread (NULL, 0,(LPTHREAD_START_ROUTINE)ComThread, NULL,0, &id))
== INVALID_HANDLE_VALUE){
ShowMessage("Error creating READ thread");
return;
}
}
|