| 
| 
 | Вопрос # 2 038/ вопрос решён / | 
 |  Здравствуйте, эксперты! Как определить физические дисководы в списке CD-ROM'ов? 
|  |   Вопрос задал: Vetalion (статус: Посетитель)Вопрос отправлен: 3 ноября 2008, 01:10
 Состояние вопроса: решён, ответов: 2.
 |  Ответ #1. Отвечает эксперт: ANBsoft Здравствуйте, Vetalion!Скорее всего никак, эмуляторы для того и созданы, чтобы обманывать программы и защиты.
 С точки зрения программы физический и виртуальный диски выглядят одинаково.
 Уже много лет идет противостояние между хакерами и защитой StarForce и поке не в пользу защиты.
 
|  | Ответ отправил: ANBsoft (статус: Студент)Время отправки: 3 ноября 2008, 08:18
 Оценка за ответ: 5
 |  Ответ #2. Отвечает эксперт: Feniks Здравствуйте, Vetalion!С помощью WMI можно определить производителя CD-ROMа. У привада есть много свойств/полей. Смотрите пример в приложении. Возможно он вас направит на путь истенный.
 Есть еще примеры по работе с аудио CD...
 
 P.S. Желаю удачи.
 Приложение:Переключить в обычный режим unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, WbemScripting_TLB, OleServer, ActiveX, StdCtrls, ExtCtrls,ComCtrls;typeTForm1 = class(TForm)   ListBox1: TListBox;   SWbemLocator1: TSWbemLocator;   Button1: TButton;   procedure Button1Click(Sender: TObject);private   { Private declarations }public   { Public declarations }end;varForm1: TForm1;implementation {$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);varService: ISWbemServices;ObjectSet: ISWbemObjectSet;SObject: ISWbemObject;PropSet: ISWbemPropertySet;SProp: ISWbemProperty;PropEnum, Enum: IEnumVariant;TempObj: OleVariant;Value: Cardinal;dr:string;beginListBox1.Clear;Service:= SWbemLocator1.ConnectServer('.', 'rootCIMV2', '', '', '','', 0, nil);SObject:= Service.Get('Win32_CDROMDrive', wbemFlagUseAmendedQualifiers, nil);ObjectSet:= SObject.Instances_(0, nil);Enum:= (ObjectSet._NewEnum) as IEnumVariant;dr:='';while (Enum.Next(1, TempObj, Value) = S_OK) dobegin   SObject:= IUnknown(TempObj) as SWBemObject;   PropSet:= SObject.Properties_;   PropEnum:= (PropSet._NewEnum) as IEnumVariant;   while PropEnum.Next(1, TempObj, Value) = S_OK do   begin     SProp:= IUnknown(TempObj) as SWBemProperty;     if SProp.Name='Drive' then dr:=SProp.Get_Value;     if SProp.Name='Name' then ListBox1.AddItem(dr+'  '+SProp.Get_Value, nil);   end;end;end;end.
|  | Ответ отправил: Feniks (статус: Бакалавр)Время отправки: 3 ноября 2008, 16:06
 Оценка за ответ: 5
 Комментарий к оценке: Похоже это то, что надо  |  
 Мини-форум вопросаВсего сообщений: 8; последнее сообщение — 4 ноября 2008, 10:11; участников в обсуждении: 3. 
|   | Вадим К (статус: Академик), 3 ноября 2008, 01:18 [#1]:Физические - в смысле действительно "физические", то есть, не эмулируемые с помощью Alchohol и подобных? Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Vetalion (статус: Посетитель), 3 ноября 2008, 01:24 [#2]:Да |  
|   | Vetalion (статус: Посетитель), 3 ноября 2008, 08:42 [#3]:В HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum по подключению (IDE или SCSI) можно определить, но как найти имя устройства? |  
|   | Vetalion (статус: Посетитель), 3 ноября 2008, 09:24 [#4]:Еще вариант: в диспетчере устройств, DVD и CD-ROM дисководы в свойствах диска есть пункт "Код экземпляра устройства", где видно подключение (IDE или SCSI). Как программно найти "Код экземпляра устройства"? P.S. Очень нужно.
 |  
|   | Вадим К (статус: Академик), 3 ноября 2008, 10:22 [#5]:Есть такая функция GetDriveType, здесь на сайте в ответах я уже когда то писал о ней и приводил куски кода. Поищите, может это то, что надо. Но надо помнить, что хороший качественный эмулятор не даст Вам определить, что он не настоящий.
 P.S. - Мне тоже много чего очень нужно. Но иногда в порыве своих мыслей мы изобретаем ненужные решения. Или решения через очень тернистые пути....
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Vetalion (статус: Посетитель), 3 ноября 2008, 10:44 [#6]:GetDriveType... С её помощью я определяю, что Drive такой-то является CD-ROM'ом, но каким - нет. Может все-таки реестр? |  
|   | Vetalion (статус: Посетитель), 4 ноября 2008, 09:56 [#7]:Уважаемые эксперты! Всем вам огромное спасибо. Тему можно считать закрытой. |  
|   | Feniks (статус: Бакалавр), 4 ноября 2008, 10:11 [#8]:Всегда пожалуйста  Приходите еще. |  31 января 2011, 19:32: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5) Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |