Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как узнать номер BIOS компа? [D6, Win95/98]


DiHLoS ©   (2002-11-12 16:57:00) 

Как узнать собственно сабж?
Буду благодарен.


DC-AC   (2002-11-14 12:18:00) [1]

Тогда ему скорее на http://www.rom.by, к Delphi это мало отношение имеет.
А давайте все дружно спросим уважаемого DiHLoS, ЧТО он пишет ;-)


jonik pegas   (2002-11-14 11:56:00) [2]

Хм, под Win9х пашет. Под Win2k придется через сторонний драйвер но тоже можно.
p.s А из-за чего спор? Человек спросил про номер биоса, ему и ответили про номер версии БИОСА. Может человек биосописатель? :)


DC-AC   (2002-11-14 10:20:00) [3]

Да, и кстати, когда-то было подобное обсуждение на тему привязки программы ко всякого рода "серийным номерам" и была высказана хорошая мысль, ссылку на ветку искаль лениво, а вот цитату могу повторить.
-----------------------------------------------------------------
msts (06.09.02 11:05)
Если сможешь решить эту задачу (привязка программы к "рабочему месту") смело проси за это 10 000 000$ как ни как сотни фирм и десятки корпораций тратят на решение этой проблемы миллионы баксов и кстати абсолютный результат = 0 иначе ты бы не сидел на XP Professional и точно не юзал Delphi :(
но конечно есть относительный результат состовляющий 17% от абсолютного, но это так отступление (которое ты и так знаешь)
в общем возьми ручку и лист бумаги (так делают все матера :))- раздели его по полам линией с одной стороны опиши типовую конфигурацию "рабочего места" - установленного на него програмного и аппаратного обеспечения (если прога стоящая то и особенные требования найдутся) на другой половине опиши какие изменения (и какова их степень) приводит к тому что теперь это _другое_ рабочее место и есть основание заявить о необходимости переустановки проги в общем решил для себя - что
значит "запустили прогу на другом компе"
(в качестве источника я бы использовал глобальную таблицу атомов, если установленна винда)
далее определился бы с форматом хранения этой информации и способа интеграции в код программы для наибольшей зависимости (придется написать свой линковщик)(можно использовать java П-код и генерить на нем часть проги - выполнять в другом потоке исползуя какую нибудь JVM)
далее я бы применил нейронные сети (в частности распознования образов) для анализа этого описания - что позволяет сделать более мягкую проверку на изменения конфигурации, с каждым запуском нужно сохранять результат анализа то есть новую конфигурацию (получится как бы фотография компа с шумом - а твоя прога будет распозновать в ней тот комп на который ее поставили и если не узнает то заявить о переустановки, но комп стареет/изменяется но если эти изменения затронули 50 из 1000 атрибутов то это нормально иначе... ) при этом должно быть накопление (в разумных пределах) результатов анализа и переодической смены эталона с которым сравнивать - комп стареет а прога его узнает (как человек постоянно видящий другого не замечает изменений а стоит возникнуть перерыву - то уже нужно узнавать)
что дают нейронные сети (НС) - сложность трассировки (прямо скажем нихрена непонятно) интеграция в нее своего кода (полезного так сказать) достаточно проста в связи с компонентной архетиктурой делфы, так же можно сделать зависимость от степени узнования - степень ограничений на функциональность проги,
так как в НС нет прямых переходов - если иначе - то банальная замена инструкций не поможет крякеру, снимок проги из памяти тоже, знание НС "не дает нихрена" (Цой) , в общем полиморфная прога на критериях зависящих от конфигурации компа.
осталось защитить генератор НС - для этого система будет состоять из 3х частей
1 - программа установки - ПУ
2 - сама программа - П
3 - генератор НС - ГНС
клиенту высылается ПУ и П - она формирует предварительное описание (ПО) раб места - передает разработчику - на основе этого ПО - генератор формирует НС и высылает назад - ПУ вшивает НС в П (ну вариации на твое усмотрение), таким образом разработчику нужно защищать только ГНС
если НС имеет 1000 узлов/нейронов помноженных на 10 связей-синапсов и того 10 000 конструкций - если/иначе - крякеру будет грусно
а теперь представь на сколько должна быть стоящей твоя прога?
а с другой стороны можно потратить 5 месяцев - наваять ~ 35 000 строк кода в скомпиленном виде ~15кб - сделать компонент для дельфы и продать за выше указанную сумму какой нибудь корпорации
-----------------------------------------------------------------


DC-AC   (2002-11-14 10:15:00) [4]

Ну если в вашем понимании СЕРИЙНЫЙ НОМЕР, который должен быть уникальным, абсолютно одинаков на MB одной партии (проверено на добром десятке матплат) - тогда я в Computer Hardware чайник c десятилетним стажем ;-)


DiHLoS   (2002-11-13 17:25:00) [5]

2 Игорь Шевченко
У меня пашет... и на еще 4-х на работе проверил -все ок:-)


Игорь Шевченко   (2002-11-13 16:49:00) [6]

maxim2 © (13.11.02 15:33)

Положил. Запустил. Получил Access Violation in Project1.exe, read of address 000FE061.

Тебе не стыдно ?


DiHLoS   (2002-11-13 16:45:00) [7]

2 maxim2:
Огромное спасибо!!!

А то "Нет такого понятия "номер BIOS"...:-)


maxim2   (2002-11-13 15:33:00) [8]

На формe положи Memo и Button

procedure TForm1.Button1Click(Sender: TObject);
begin
with Memo1.Lines do
begin
Add("MainBoardBiosName:"+^I+string(Pchar(Ptr($FE061))));
Add("MainBoardBiosCopyRight:"+^I+string(Pchar(Ptr($FE091))));
Add("MainBoardBiosDate:"+^I+string(Pchar(Ptr($FFFF5))));
Add("MainBoardBiosSerialNo:"+^I+string(Pchar(Ptr($FEC71))));
end;
end;


DiHLoS   (2002-11-13 14:54:00) [9]

BIOSa, как например определяет SiSoft Sandra


DC-AC   (2002-11-13 14:16:00) [10]

Серийный номер ЧЕГО ???


DiHLoS   (2002-11-13 13:49:00) [11]

Ну версию и производителя BIOS я узнать могу.
Но есть же у нее серийный-то номер??? Как узнать?
Help, please....


DC-AC   (2002-11-13 12:22:00) [12]

jonik pegas : данный код работает, но только под W9x.
А постановка задачи у автора некорректная изначально. Нет такого понятия "номер BIOS". Точнее он есть только на некоторых MB некоторых брэндов (Dell,COMPAQ и пр).


jonik pegas   (2002-11-13 10:00:00) [13]

Алексей Ким
Наверное нельзя. Ето тебе не DOS.


Алексей Ким   (2002-11-12 22:07:00) [14]

если имеется ввиду дата выхода биоса наверно можно так

...:=string(pchar(ptr($FFFF5)));


Marcus   (2002-11-12 19:09:00) [15]

> Roman Tokov

Reg := TRegistry.Create(KEY_READ);
Reg.RootKey := HKEY_LOCAL_MACHINE;
Reg.OpenKey("Hardware\Description\System", false);
BiosDate := Reg.ReadString("SystemBiosDate");

Програмней, по-моему, некуда :)))


Roman Tokov   (2002-11-12 18:59:00) [16]

А как програмно?


Marcus   (2002-11-12 18:38:00) [17]

В реестр надо лезть
Для НТ: HKLM\Hardware\Description\System параметры SystemBiosDate, SystemBiosVersion
Для 9х: HKLM\Enum\Root\*PNP0C01\0000, BIOSVersion, BIOSDate


Наверх

Титульная страница Поиск, карта сайта Написать письмо