Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.02;
Скачать: CL | DM;

Вниз

Серийный номер диска   Найти похожие ветки 

 
dima1234   (2005-08-08 16:49) [0]

Необходимо считать серийный номер CD-диска. Нужно это для создания защиты от копирования.
Поискал в инете, нашел, что надо плясать от DeviceIoControl, но документации не нашел...
Если кто-нибудь сталкивался с подобным вопросом, подскажите хоть что-нибудь.


 
Ботвин Дмитрий   (2005-08-08 17:10) [1]

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

Буква CD-ROM:
function GetFirstCDROMDrive: char;
var
  drivemap, mask: DWORD;
  i: integer;
  root: string;
begin
  Result := #0;
  root := "A:\";
  drivemap := GetLogicalDrives;
  mask := 1;
  for i := 1 to 32 do
  begin
    if (mask and drivemap) <> 0 then
      if GetDriveType(PChar(root)) = DRIVE_CDROM then
      begin
        Result := root[1];
        Break;
      end;
    mask := mask shl 1;
    Inc(root[1]);
  end;
end;

А серийник:
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;


 
Poirot ©   (2005-08-08 17:37) [2]

Угу, тока вот этот номер корячится просто а потом где хранить то, с чем проверять?! :)
Вот через первое и пляши + см таки MSDK :)


 
MetalFan ©   (2005-08-08 18:47) [3]

GetHardDiskSerial
ага, и для ЦД тоже сработает %)


 
MetalFan ©   (2005-08-08 18:48) [4]

да только толка от этого мало...


 
Ded Moroz ©   (2005-08-08 21:52) [5]

2 dima1234

Должен тебя разочаровать. На CD-болванке НЕТ НИЧЕГО УНИКАЛЬНОГО!
Там просто пустая матрица. Серийный номер ЛЕГКО задается/копируется при записи. Я тоже раньше думал к номеру привязываться...


 
dima1234   (2005-08-09 08:27) [6]

GetVolumeInformation не подходит, т.к. вместо серийника он возвращает номер файловой системы, кот. меняется при записи и остается при снятии образа.
А на болванке все таки есть уникальная ATIP информация, единственно ее можно получить если болванка не пустая.
Работа с DeviceIoControl упирается в Microsoft DDK, точнее в ntddcdrm.h, может у кого то есть ссылка на перелопаченный этот h на pas?
Или подскажите какие методы еще есть? Не хочеться писать отдельную dll с функцией проверки серийника...



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

Текущий архив: 2005.10.02;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.038 c
14-1126689086
Unleashed
2005-09-14 13:11
2005.10.02
Нужна свежая идея


11-1107505848
Lars
2005-02-04 11:30
2005.10.02
sending message inside same application


1-1126176175
РУДЗРУДЗ
2005-09-08 14:42
2005.10.02
не работает ссылка ???


4-1123070759
Jet
2005-08-03 16:05
2005.10.02
Как отловить момент закрытия консольного приложения?


3-1124531396
Mortal
2005-08-20 13:49
2005.10.02
Transact-SQL: Восстановление базы в MSSQL.