Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Привязка к серийному номеру HDD, Как сделать? 
V
    Опции темы
djman2006
Дата 20.7.2007, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 10.6.2007

Репутация: нет
Всего: 1



Пишу одну софтину и очень хотелось бы чтоб она запускалась только на одном компютере. Только вот как привязать к железу не знаю, вроде как бы привязуют к SN винта, но не знаю как его считать. Помогите плс...

Это сообщение отредактировал(а) djman2006 - 20.7.2007, 13:39
PM MAIL   Вверх
_hunter
Дата 20.7.2007, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



нужно всего лиш воспользоваться поиском: темы о получении серийного номера жесткого диска уже поднимались...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
djman2006
Дата 20.7.2007, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 10.6.2007

Репутация: нет
Всего: 1



Нашол на паскале, и то там серийный номер тома, а мне надо HDD
Вот пример:
Model number: Maxtor 2F040L0                          
 Firmware rev: VAM51JJ0
 Serial number: F16WA2EE
нужно получить значение выделеное красным.
PM MAIL   Вверх
bsa
Дата 20.7.2007, 14:31 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



PM   Вверх
djman2006
Дата 20.7.2007, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 10.6.2007

Репутация: нет
Всего: 1



Ета тема вопроса не решает  smile 
В других нашол на паскале 
И вааще куда не смотрю (из етого) все говорят "Такая тема уже была" итд, но ни в одной решения не было  smile 
На делфи функция занемает 14 строчек кода, может ктото переведет?
Код

function GetHardDiskSerial(const DriveLetter: Char): string; 
var 
  NotUsed:     DWORD; 
  VolumeFlags: DWORD; 
  VolumeInfo:  array[0..MAX_PATH] of Char; 
  VolumeSerialNumber: DWORD; 
begin 
  GetVolumeInformation(PChar(DriveLetter + ':'), 
    nil, SizeOf(VolumeInfo), @VolumeSerialNumber, NotUsed, 
    VolumeFlags, nil, 0); 
  Result := Format('Label = %s   VolSer = %8.8X', 
    [VolumeInfo, VolumeSerialNumber]) 
end; 


ЗЫ Простите за мой плохой русский

Это сообщение отредактировал(а) djman2006 - 20.7.2007, 15:24
PM MAIL   Вверх
bsa
Дата 20.7.2007, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



GetVolumeInformation возвращет серийный номер раздела, а не диска.
Серийный номер жесткого диска можно узнать только обратившись напрямую к драйверу контроллера жестких дисков, если, конечно, этот драйвер имеет возможность вернуть серийник.

Добавлено через 2 минуты и 23 секунды
Может это тебе поможет: http://msdn2.microsoft.com/en-us/library/aa363216.aspx
PM   Вверх
djman2006
Дата 20.7.2007, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 10.6.2007

Репутация: нет
Всего: 1



Кое что нашол:
Код

  if ( DeviceIoControl (hPhysicalDriveIOCTL, IOCTL_STORAGE_QUERY_PROPERTY,
                   & query,
                   sizeof (query),
                   & buffer,
                   sizeof (buffer),
                   & cbBytesReturned, NULL) )
         {         
             STORAGE_DEVICE_DESCRIPTOR * descrip = (STORAGE_DEVICE_DESCRIPTOR *) & buffer;
             char serialNumber [1000];
             char modelNumber [1000];

             strcpy (serialNumber, 
                     flipAndCodeBytes ( & buffer [descrip -> SerialNumberOffset]));
             strcpy (modelNumber, & buffer [descrip -> ProductIdOffset]);
             if (0 == HardDriveSerialNumber [0] &&
                        //  serial number must be alphanumeric
                        //  (but there can be leading spaces on IBM drives)
                   (isalnum (serialNumber [0]) || isalnum (serialNumber [19])))
             {
                strcpy (HardDriveSerialNumber, serialNumber);
                strcpy (HardDriveModelNumber, modelNumber);
                done = TRUE;
             }

Ето кусок етого кода
Только как его сформировать в функцию, и заставить работать...

Это сообщение отредактировал(а) djman2006 - 20.7.2007, 15:43
PM MAIL   Вверх
djman2006
Дата 20.7.2007, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 10.6.2007

Репутация: нет
Всего: 1



bsa , спс DeviceIoControl реально помог  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0759 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.