jak odczytać Serial'a płyty głównej

dział ogólny

jak odczytać Serial'a płyty głównej

Nowy postprzez Frani0 » poniedziaÅ‚ek, 25 sierpnia 2008, 18:30

witam sporo goglowałem ale temat został nie roztrzygnięty gdy znajdę jakiś kod to albo jest on dla mnie nie zrozumiały albo pod inny język albo nie działa szukałem an zagranicznych forach lecz z moim angielskim to hello word nie znajdę może znacie jakiś prosty kod wyświetlający serial number płyty głównej lub moze macie działający program z kodem źrudłowym?
Avatar użytkownika
Frani0
Bladawiec
Bladawiec
 
Posty: 48
Dołączył(a): poniedziałek, 25 sierpnia 2008, 18:23
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana

Re: jak odczytać Serial'a płyty głównej

Nowy postprzez Cyfrowy Baron » poniedziaÅ‚ek, 25 sierpnia 2008, 19:42

Kod: Zaznacz cały
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{
HKEY hKey;
    LONG Res1,Res2;
    DWORD cData=255;
   char SystemBiosVersion[255] = {'\0'};
   Res1 = RegOpenKeyEx(HKEY_LOCAL_MACHINE,"HARDWARE\\DESCRIPTION\\System",
         NULL, KEY_QUERY_VALUE, &hKey);
    if(Res1==ERROR_SUCCESS)
    {
    Res2 = RegQueryValueEx( hKey,"SystemBiosVersion", NULL, NULL,
                          (LPBYTE)SystemBiosVersion, &cData);
      if(Res2==ERROR_SUCCESS)
      {
       String tmp = "";
       for(int i = 0; i < sizeof(SystemBiosVersion); i++)
       {
        if(SystemBiosVersion[i] == 0)
        {
         if(tmp.Length() > 1)
         {
         Memo1->Lines->Add(tmp);
         SystemBiosVersion[i] = ' ';
         }
         tmp = "";
        }
        else tmp = tmp + (String)SystemBiosVersion[i];
       }
       Edit1->Text = (String)SystemBiosVersion;
      }
        else
        {
         MessageBox(NULL,"RegQueryValueEx: SystemBiosVersion","ERROR",MB_OK);
        }
    }
    else
    {
      MessageBox(NULL,"RegOpenKeyEx: SystemBiosVersion","ERROR",MB_OK);
   }

   RegCloseKey(hKey);
}
//---------------------------------------------------------------------------


To taki prosty przykład pokazujący jak pobrać wersję BIOS'u do Memo w liniach i do Edit w całości (niepotrzebne skreślić). ;)
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: jak odczytać Serial'a płyty głównej

Nowy postprzez Cyfrowy Baron » wtorek, 26 sierpnia 2008, 09:12

Dziś pomyślałem sobie, że jako początkujący możesz mieć problemy z przerobieniem tego kodu, wiec podaję dwa rozwiązania.

Pierwsze rozwiązanie polega na wyświetleniu wersji BIOS'u w Memo1, z podziałem na linie, gdyż na ten klucz składa się kilka informacji:

Kod: Zaznacz cały
void __fastcall TForm1::Button5Click(TObject *Sender)
{
  HKEY hKey;
  LONG Res1,Res2;
  DWORD cData = 255;
  TCHAR SystemBiosVersion[255] = {'\0'};
  Res1 = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "HARDWARE\\DESCRIPTION\\System", NULL, KEY_QUERY_VALUE, &hKey);

  if(Res1==ERROR_SUCCESS)
  {
   Res2 = RegQueryValueEx(hKey, "SystemBiosVersion", NULL, NULL,  (LPBYTE)SystemBiosVersion, &cData);
   if(Res2==ERROR_SUCCESS)
   {
     int i = 0;
     while(i < cData)
     {
       if(SystemBiosVersion[i] == '\0') SystemBiosVersion[i] = '\r';
       i++;
     }
     Memo1->Lines->SetText(SystemBiosVersion);
   }
    else
    {
      Application->MessageBox("RegQueryValueEx: SystemBiosVersion", "ERROR", MB_OK | MB_ICONSTOP);
    }
   }
  else
   {
     Application->MessageBox("RegQueryValueEx: SystemBiosVersion", "ERROR", MB_OK | MB_ICONSTOP);
   }

  RegCloseKey(hKey);
}




Drugi sposób polega na wyświetleniu wersji BIOS'u w obiekcie Edit1 bez podziału na linie:

Kod: Zaznacz cały
void __fastcall TForm1::Button5Click(TObject *Sender)
{
  HKEY hKey;
  LONG Res1,Res2;
  DWORD cData = 255;
  TCHAR SystemBiosVersion[255] = {'\0'};
  Res1 = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "HARDWARE\\DESCRIPTION\\System", NULL, KEY_QUERY_VALUE, &hKey);

  if(Res1==ERROR_SUCCESS)
  {
   Res2 = RegQueryValueEx(hKey, "SystemBiosVersion", NULL, NULL,  (LPBYTE)SystemBiosVersion, &cData);
   if(Res2==ERROR_SUCCESS)
   {
     int i = 0;
     while(i < cData)
     {
       if(SystemBiosVersion[i] == '\0') SystemBiosVersion[i] = ' ';
       i++;
     }
     Edit1->SetTextBuf(SystemBiosVersion);
   }
    else
    {
      Application->MessageBox("RegQueryValueEx: SystemBiosVersion", "ERROR", MB_OK | MB_ICONSTOP);
    }
   }
  else
   {
     Application->MessageBox("RegQueryValueEx: SystemBiosVersion", "ERROR", MB_OK | MB_ICONSTOP);
   }

  RegCloseKey(hKey);
}
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: jak odczytać Serial'a płyty głównej

Nowy postprzez riddyk » sobota, 30 sierpnia 2008, 19:24

Wszystko sprowadza siÄ™ do odnalezienia odpowiedniego klucza rejestru i pobraniu z rekordu informacji.
google to twój przyjaciel, pielęgnuj tą przyjaźń, rozmawiajcie, zadawaj mu pytania, na pewno Cię nie zawiedzie.
Avatar użytkownika
riddyk
Bladawiec
Bladawiec
 
Posty: 20
Dołączył(a): niedziela, 20 lipca 2008, 17:27
Lokalizacja: Gliwice
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana

Re: jak odczytać Serial'a płyty głównej

Nowy postprzez Cyfrowy Baron » sobota, 30 sierpnia 2008, 19:42

Tak, ale tych kluczy rejestru nie da się pobrać za pomocą klasy TRegistry, gdyż są chronione i jest wymagalny specjalny tryb dostępu.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana


  • 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 1 gość