| Дмитрий | 
   Отправлено: 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
  
 |   
 | 
 
  | 
 
  |