CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - detekcja portów COMM

detekcja portów COMM

dział ogólny

detekcja portów COMM

Nowy postprzez Mironas » piątek, 31 października 2014, 14:13

Poniższy kod listujący dostępne porty COMM działa tylko jeśli aplikacja jest uruchomiona z konta z uprawnieniami administratora.
Można coś zrobić aby działało też z konta bez tych uprawnień?

Unit1.h
KOD cpp:     UKRYJ  
#include <Registry.hpp>

private:
  void DetekcjaPortowCOMM(TStrings* lista);
 


Unit1.cpp
KOD cpp:     UKRYJ  
void __fastcall TForm1::btnPortyCommClick(TObject *Sender)
{
  DetekcjaPortowCOMM(Memo1->Lines);
}
//---------------------------------------------------------------------------
void TForm1::DetekcjaPortowCOMM(TStrings* lista)
{
  TRegistry& regKey = *new TRegistry();
  regKey.RootKey = HKEY_LOCAL_MACHINE;
  bool keyGood = regKey.OpenKey("HARDWARE\\DEVICEMAP\\SERIALCOMM", false);
  if (keyGood)
  {
    regKey.GetValueNames(lista);
    for (int i=0 ; i<lista->Count ; i++)
      lista->Strings[i] = regKey.ReadString(lista->Strings[i]);
  }
  delete &regKey;
}
//---------------------------------------------------------------------------
 
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 427
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 17
Otrzymał podziękowań: 61
System operacyjny: Windows 10
Kompilator: C++Builder 10.3 Rio
TMS Components Pack
Gadu Gadu: 0
    Windows XPChrome

Re: detekcja portów COMM

Nowy postprzez polymorphism » piątek, 31 października 2014, 18:48

Obawiam się, że czytanie bezpośrednio z rejestru nie przejdzie. Poszukaj jakichś funkcji systemowych, które te informacje są w stanie Ci dostarczyć (może WMI?).

KOD cpp:     UKRYJ  
TRegistry& regKey = *new TRegistry();
...

delete &regKey;

WTF man?!
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows 7Firefox

Re: detekcja portów COMM

Nowy postprzez Mironas » piątek, 31 października 2014, 19:03

polymorphism napisał(a):WTF man?!

No dziwnie, ale działa. Nie wiem skąd to wziąłem :(
Oczywiście powinno być:
KOD cpp:     UKRYJ  
TRegistry* regKey = new TRegistry();
...
delete regKey;
 
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 427
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 17
Otrzymał podziękowań: 61
System operacyjny: Windows 10
Kompilator: C++Builder 10.3 Rio
TMS Components Pack
Gadu Gadu: 0
    Windows XPChrome

Re: detekcja portów COMM

Nowy postprzez polymorphism » piątek, 31 października 2014, 19:12

Wpadł mi jeszcze inny sposób detekcji portów, choć nie wiem, czy będzie działał prawidłowo - próbuj otwierać kolejne porty funkcją CreateFile.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows 7Firefox

Re: detekcja portów COMM

Nowy postprzez Corvis » wtorek, 16 grudnia 2014, 10:29

KOD cpp:     UKRYJ  
bool keyGood = regKey.OpenKey("HARDWARE\\DEVICEMAP\\SERIALCOMM", false);


OpenKey zamień na OpenKeyReadOnly
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows 7Chrome


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 15 gości

cron