Доброго времени суток. Вообщем столкнулся с необходимостью определять физические серийные номера устройств, таких как: винчестер, сетевая плата(если не встроеная), процессор, CD/DVD-привод, материнка, память, видеокарта(опять же если не встроеная). О винчестерах много написано, но как быть с остальными устройствами? Линки по материалам приветствуются. был бы один системник я бы и так нашёл, но их много
Можешь посмотреь через WMI (как им пользоваться на делфе ищи в гугле). Вот тебе далеко не полная подборочка имен да и сам полазь стандарными утилитами, может что для себя полезное найдешь
советую посмотреть исходники проги под названием aspia. Это Опер сорс прога котоаря показывала инфу о системе. тока там дров юзается(для некоторых специфических данных) и на Си написана
тут надо много уточнений,например серийник интелового проца и амдшного по-разному буду определяться,могу сказать следующее: 1)Серийник винта умеют определять некоторые компоненты,поищи в нете 2)серийник сетевухи-(если ошибаюсь-поправьте)ты говоришь о мак адресе?узнать можешь даже через ipconfig 3)для процессора на delphi даже не знаю как,на асме встроенном разве что,ну могу на чистом асме навоять если надо. 4)какой памяти,озу в смысле? 5)номер материнки можно взять из биоса,иногда данные есть в реестре 6)для видюхи это по-моему невозможно вообще,по крайней мере я еще такого не встречал. Все еще зависит от оси.так что не все так просто.
серийник винта/флешки можно определить через IOCTL запрос к драйверу. А именно: IOCTL_STORAGE_QUERY_PROPERTY большинство IDE это поддерживают. Через этот запрос удобно узнать название винта. Зависит всё от структуры. Всё в MSDN хорошо описано
Компонент: MiTeC System Information Добавляет правда под мб весу, но можно как плагин подключить в библиотеке. Выдает вообще все что можно о системе. Вместе с исходниками можно найти на варезных сайтах. Если хочешь без доп весу то только через WMI
вот почитал доку,навоял те для проца Code: ;This program was created in assembler editor .486 .model flat, stdcall option casemap:none include include\windows.inc include include\kernel32.inc include include\user32.inc includelib lib\kernel32.lib includelib lib\user32.lib .const viv db "%04X-%04X-%04X-%04X-%04X-%04X", 0 .data? buffer db 128 dup(?) .code start: pushad mov eax, 1 cpuid push eax mov eax, 3 cpuid pop eax invoke wsprintf, addr buffer, addr viv,ebx,eax,edx,ecx invoke MessageBox, 0, addr buffer, 0, MB_OK popad invoke ExitProcess, 0 end start теперь что к чему и как работает: при cpuid eax=3 в регистры edx,ecx возвращается 8 байт номера, вместе с теми 4 что возвращаются в eax при cpuid eax=1.В следствии этого мы получаем уникальный идентификатор процессора, то-бишь с.н. Конечно весь этот бадыль будет работать не старше чем на 3-м пеньке и если фича включена в биосе(а по дефолту она вырублена)
Спасибо большое за старания, но в асме я дуб дубом Вот если бы кто реализовал на delphi... Кому интересно вот линк на win32 classes. Там тоже надо разбиратся конечно, но повторюсь ещё раз, он точно мне серийный номер физический даст или всё - таки номер в системе?
Еще раз повторюсь, как бы ты не определял,на каком бы языке не делал(для процессора)выше чем пентиум 3 серийники НЕ ПОКАЗЫВАЮТСЯ!!!
Да понил я тебя, что ты кричиш, не в том вопрос с какого пентиума, то, что с третьего я понил, я спрашиваю серийник выдаст в системе или физический?
физический выдаст только если юзать низший уровень, то-бишь ассемблер.Компоненты скорее всего ничего не выдадут.