Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2011.03.27;
Скачать: [xml.tar.bz2];

Вниз

Как узнать серийный номер процессора и винчестера   Найти похожие ветки 

 
Wadimka   (2009-01-30 14:03) [0]

Подскажите, как узнать серийный номер процессора и винчестера?


 
clickmaker ©   (2009-01-30 14:07) [1]

например, через WMI, классы Win32_Processor и Win32_DiskDrive


 
AllDontFire   (2009-05-05 18:06) [2]

Мне попался пример "WMI.zip", в котором перечисляются все классы со всеми их данными. Так вот в классе Win32_DiskDrive, наверное, есть всё, кроме серийного номера HDD. На одном форуме видел пост, что там серийника быть и не должно, он есть в классе Win32_PhysicalMedia - да, свойство SerialNumber там есть, но в рез. данных только:
instance of Win32_PhysicalMedia {Tag = "\\\\.\\PHYSICALDRIVE0";};

1)Вот пример опредения через \\.\SCSI и IOCTL_SCSI_MINIPORT:
http://www.delphikingdom.com/asp/answer.asp?IDAnswer=18102
2)Вот через \\.\PhysicalDrive и Smart. Пример на C++.
http://www.sql.ru/forum/actualthread.aspx?tid=378384

(винт SATA II):
1 - не работает под Win64 и Vista.
2 - не работает под Vista (под админом DoEnableSmart выдаёт "неверная функция")

У кого-нибудь есть рабочие примеры для приведенных случаев?


 
Игорь Шевченко ©   (2009-05-05 19:32) [3]


> У кого-нибудь есть рабочие примеры для приведенных случаев?


у Коншина ?


 
AllDontFire   (2009-05-06 15:56) [4]

http://home.earthlink.net/~akonshin/delphi_ru.htm
В этом сайте есть 4 примера по сабжу, с сожалению, ни один из них не сработал на Win64 и Висте (да и там не сказано что проверялось на 64 бит и Висте).
Пример ScsiSN использует $0004D004 - IOCTL_SCSI_PASS_THROUGH,
но серийного номера там нет. (кстати чтоб это увидеть, нужно переделать пример):  
if DeviceIoControl( DeviceHandle, $0004d004, @sptwb, SizeOfTScsiPassThrough), @sptwb, len, dwReturned, nil )
//and ((PChar(@sptwb.bDataBuf)+1)^=#$80)
 then for i:=0 to 191 do write(sptwb.bDataBuf[i])

В описании  var bDataBuf изменить на char и добавить i:byte.

У меня есть рабочий пример (\\.\PhysicalDrive и Smart под админом) под Win64, но под Vista он не работает (DoEnableSmart выдаёт "неверная функция).

На http://www.astra32.com/ru/ есть программа определяющая серийник под Вистой, так что сабж возможен :-)


 
Nickoss ©   (2009-05-06 17:59) [5]


> в классе Win32_DiskDrive, наверное, есть всё, кроме серийного
> номера HDD


А чего ж нет ? Вот, вроде есть
http://msdn.microsoft.com/en-us/library/aa394132(VS.85).aspx

SerialNumber  string


 
AllDontFire   (2009-05-06 18:25) [6]

Там чуть ниже :-) :

> SerialNumber
>
>     Data type: string
>     Access type: Read-only
>
>     Number allocated by the manufacturer to identify the
> physical media.
>
>     Example: WD-WM3493798728
>
>         Windows Server 2003, Windows XP, Windows 2000, and
> Windows NT 4.0:  This property is not available.


 
Nickoss ©   (2009-05-06 20:43) [7]

Нашел интересный архивчик с демкой по WMI. Серийник винта определяется из под Висты. Исходники прилагаются.

http://www.magsys.co.uk/delphi/magwmi.asp


 
AllDontFire   (2009-05-06 22:56) [8]

Спасибо за пример по WMI, но и он не справился с тем хардом на Висте. И дело, похоже не в Висте. Помню пару лет назад на Висте обычный IDE винт определялся смартом на раз-два.

В общем,  винт c виду обычный Serail Ata.
OS: Ms Windows Vista Home Basic 6.0.6000
В примере определяется как WDC WD25 00AAJS-00VWA SCSI Disk Device (так он называется в диспетчере устройств)
По кнопке “Disk SMART” выдаёт «No SCSI Drive Serial Number Returned». В других местах серийника тоже нет (Ткните пальцем, плиз, если не туда жму).

Что выдаёт Astra32:
Модель м. платы WinFast 6100M2MA
Имя чипсета NVIDIA GeForce 6100/6150/nFoce 500 Family
Чипсет C51 Host Bridge
Южный мост MCP51 LPC Bridge

Hdd:
Model: WDC WD25 00AAJS-00VWA
Interface Type : Serial Ata II
Serial: WD-WM[demo]
Verdor ATA controller: Nvidia
Name ATA controller: MCP51 SATA controller
Location: Tertiary/Master.


Кстати у меня винт на WinXP64bit тоже Serial ATA II, определяется астрой, если просто выбрать «Жёсткий диск», а на той Висте нужно ещё включить “Внешний UDMA/SATA”, хотя винт в корпусе подключен сразу в материнку.


 
brother ©   (2009-05-07 04:17) [9]

> а на той Висте нужно ещё включить “Внешний UDMA/SATA”, хотя
> винт в корпусе подключен сразу в материнку.

может "дрова" коряво встали или не от него?


 
QAZ   (2009-05-07 14:33) [10]

у процесоров нет серийника
а у диска проще всего узнать серийник тома


 
Anatoly Podgoretsky ©   (2009-05-07 16:03) [11]

Задачу то какую решаешь?


 
AllDontFire   (2009-05-07 18:39) [12]

Задача:
Получить серийный номер Hdd и использовать его для защиты ПО.


 
Nickoss ©   (2009-05-07 19:38) [13]

Прога testwmi.


> По кнопке “Disk SMART” выдаёт «No SCSI Drive Serial Number
> Returned»


А что выдает по кнопке "Disk serial (xp)" ?

или по кнопке "Get Class or Query" Win32_PhysicalMedia в разделе SerialNumber.

Кстати, а нельзя ли привязаться к PNPDeviceID из Win32_DiskDrive ? Его легко вытащить и из системного реестра. Только вот насколько он уникальный и неизменяемый.


 
AllDontFire   (2009-05-07 20:06) [14]

"Disk serial (xp)" --NULL
"Get Class or Query" Win32_PhysicalMedia" -- NULL все кроме Tag.


> привязаться к PNPDeviceID

- интересная идея, конечно, но опять же сразу вопросы
> насколько он уникальный и неизменяемый"


Мне, благодаря "Астре", уже хочется найти код для "Внешний UDMA/SATA”.


 
Сергей М. ©   (2009-05-07 20:22) [15]


> обычный IDE винт


> винт c виду обычный Serail Ata


Хрень какая-то ..

Левый глаз видит на винте IDE-разъем, а правый глаз на том же винте видит SATA-разъем ?


 
Nickoss ©   (2009-05-07 20:43) [16]

Попробовал подключить IDE-диск через USB-адаптер - та же картина. testwmi его определяет, но в SerialNumber = NULL. По кнопке "Disk model" пишет ST322413A USB Device, также определяются размер, caption. Всё это из под ХР.

Нашел еще два параметра, ИМХО, уникальных:

Win32_BaseBoard   SerialNumber (15-значный ID).  Номер совпадает с номером на узкой наклейке со штрих-кодом, расположенной справа от разъема питания материнки (Asus P5K-E).

Win32_Processor    ProcessorId (16-значное шестнадцатиричное число).


 
AllDontFire   (2009-05-07 21:01) [17]

Сергей М. ,
это 2 разных HDD.


 
AllDontFire   (2009-05-07 21:11) [18]

Nickoss,
У меня Win32_BaseBoard  SerialNumber выдал "MB-1234567890" для Asus P5B.
ProcessorID более вменяемый правда.


 
DVM ©   (2009-05-08 00:13) [19]


> Nickoss ©   (06.05.09 20:43) [7]
>
> Нашел интересный архивчик с демкой по WMI. Серийник винта
> определяется из под Висты.

Под админом только


 
Германн ©   (2009-05-08 02:00) [20]


> AllDontFire   (07.05.09 18:39) [12]
>
> Задача:
> Получить серийный номер Hdd и использовать его для защиты
> ПО.
>

А моэжет не стОит?


 
Nickoss ©   (2009-05-08 10:06) [21]


> Под админом только


???   И под обычным юзером всё работает, только что проверил. Отказано в  доступе только по кнопке "Disk smart".
По "Disk serial (xp)" и
"Win32_PhysicalMedia" SerialNumber выдается та же инфа, что и под админом.

Vista Business SP1.


 
имя   (2009-05-23 18:37) [22]

Удалено модератором


 
Виктор85   (2009-05-29 12:29) [23]

Интересно, а эта штука правильно определяет хард
http://www.soft.tahionic.com/download-hdd_id/free-download/app-source-code.html


 
имя   (2009-07-06 09:29) [24]

Удалено модератором



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2011.03.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.004 c
15-1292228985
NailMan
2010-12-13 11:29
2011.03.27
Я все таки сделал это!


15-1292354107
Фокс Йовович
2010-12-14 22:15
2011.03.27
Убить процесс


15-1292196119
semjuel
2010-12-13 02:21
2011.03.27
Нужен компонент.....


15-1292001237
картман
2010-12-10 20:13
2011.03.27
преобразование длины волны


2-1294145958
SoulOfAngel
2011-01-04 15:59
2011.03.27
ошибка в присваивание процедур событиям





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский