C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
S/n материнской платы..., Как узнать S/n материнской платы и пр.
Дмитрий
  Отправлено: 27.11.2003, 23:38


Не зарегистрирован







Подскажите, как можно узнать серийный номер материнки или др. уникального устройства. Задача такая: Чтобы программа запускалась только на данном компьютере.
Admin
Отправлено: 09.12.2003, 20:26


Владимир

Группа: Администратор
Сообщений: 1190



http://blackman.wp-club.net/myfaq/faq9f.php
CODE

Как получить информацию о БИОСе?

18 сен 2001 (вторник), 10:27:48

Как получить информацию о БИОСе?
--------------------------------------------------------------------------------
Вот пример как можно даты БИОС материнской платы и видеокарты выдрать.
То же самое можно с названием производителя и версией.
В WinNT приходится читать не из ПЗУ а из реестра но это достаточно надежно
- соотв ключи WinNT закрывает на запись и обновляет при каждом старте (?).
Для Win9x можешь хоть весь БИОС напрямую читать.

  Получить заводской номер винчестера (не тот что getvolumeinfo дает) ИМХО
невозможно — порты IDE даже Win9x блокирует.

typeT
> OSisNT then begin     with TRegistryRO.Create do
try       RootKey := HKEY_LOCAL_MACHINE;
       if OpenKeyRO (SystemKey) then
  begin
           s := ReadString (BiosDateParam);
            end;
            finally
         Free;  
             end; { of try}
             end  
           else
(VideoDatePtr + 60 + 250);
       Move (p^, s[1], 255);
         if pos('/', s) > 2 then s := copy (s, pos('/', s) — 2, 8);  
        end;     except FillChar (s[1], 8, '9');
        end; { of try}
      Result := copy (s, 1, 2) + copy (s, 4, 2) + copy (s, 7, 2);
      end;
      unit WAPIInfo;interfaceuses Registry, SysUtils, Window
b>if s = 'SERVERNT' then OSStr := OSStr + ' Server 3.5 & hi'
    else if s = 'LANMANNT' then OSStr := OSStr + ' Advanced server 3.1';  
     Reg.Free;  
     end;  
   end;
    with OSVerInfo do OSStr := OSStr + Format (' %d.%d (выпуск %d)',  
    [dwMajorVersion, dwMinorVersion, LoWord(dwBuildNumber)]);
    end;f
    unction OSisNT : 24]);
end;
end.

PS Возможно, эти процедуры не всегда дату возвращают;)
но то что практически всегда для разных материнских/видео
плат возвращаются разные значения — проверено, что мне
собственно и требовалось.

Andrey Sorokin from sunny;) Saint-Petersburg anso@mail.ru
Russian Technology http://attend.to/rt anso@rt.spb.ru


Вернуться в Вопросы программирования в C++Builder