Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2010, 12:33   #1
@лександр
 
Регистрация: 23.09.2010
Сообщений: 4
По умолчанию по букве тома определить физический серийный номер накопителя, а не номер тома

Написал программу на Delphi7, хочу сделать чтобы её посли установки не могли перенести на другой (физический) диск путём клонирования.
Искал в поисковиках как читать серийный номер, там везде один и тот же вариант дублируется. А он не везде работает, зависит от конфигурации.
Мне нужно по букве тома определить физический серийный номер накопителя, а не номер тома. Помогите пожалуста.
@лександр вне форума Ответить с цитированием
Старый 23.09.2010, 13:13   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну разве что через WMI получить информацию об устройстве...
Но все равно учти нет надежной защиты даже с привязкой к железу.
Ее можно отвязать, если иметь знакомства в среде Какеров.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.09.2010, 13:17   #3
@лександр
 
Регистрация: 23.09.2010
Сообщений: 4
По умолчанию

А на ассемблерной вставке никак нельзя?
@лександр вне форума Ответить с цитированием
Старый 23.09.2010, 13:23   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Может и можно. Я сказал то что знаю, то что сам использую - WMI. Там много интересного.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.09.2010, 13:25   #5
@лександр
 
Регистрация: 23.09.2010
Сообщений: 4
По умолчанию

Можно примерчик?!
@лександр вне форума Ответить с цитированием
Старый 23.09.2010, 13:53   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А погуглить? А хелп почитать? Или не модно уже своими руками рыть?
Вот получение серийника тома:
Код:
program WQL;

{$APPTYPE CONSOLE}

uses
  activex,
  comobj,
  variants,
  SysUtils;

var Host,Root,FLogin,FPassword:string;



procedure pEnum(Obj: OleVariant);
var PropEnum:IEnumVariant;  i:Cardinal; s:string; d:double;
begin
    PropEnum:=IEnumVariant(IUnknown(Obj.Properties_._NewEnum)); //Поля
    while (PropEnum.Next(1, Obj, i) = S_OK) do begin
     try
      if obj.CIMType=$00000065 then begin
       s:=Obj.Value;
       s:=copy(s,7,2)+'.'+copy(s,5,2)+'.'+copy(s,1,4);
      end else
      if VarIsNull(Obj.Value) then s:='' else   s:=Obj.Value;
      writeln(obj.name,' = ',s);
     except

     end;
    end;
end;

 procedure SetSQL2(const FSQL2: String);
var objSWbemLocator,objWMIService,Records,o1,o2
 :OleVariant;
 i:Cardinal;   s:string;
 id:IDispatch;
 Enum:IEnumVariant;
begin
  objSWbemLocator:=CreateOleObject('WbemScripting.SWbemLocator');
  if not VarIsClear(objSWbemLocator) then begin
    objWMIService:=objSWbemLocator.ConnectServer(Host,Root,FLogin,FPassword,'','',0,id);
    if not VarIsClear(objWMIService) then begin
      Records:=objWMIService.ExecQuery(FSQL2,'WQL',0,id);
      if not VarIsClear(Records) then begin
       //**************************************
           Enum:=IEnumVariant(IUnknown(Records._NewEnum)); //Список Записей
           while (Enum.Next(1, o1, i) = S_OK) do begin
            pEnum(o1);   writeln;
           end;
       //**************************************
       Records:=Unassigned;
      end;
     objWMIService:=Unassigned;
    end;
    objSWbemLocator:=Unassigned;
  end;
end;

begin
   Host:='.';
   Root:='root\cimv2';
   CoInitialize(0);
    SetSQL2('select Caption, VolumeSerialNumber from Win32_LogicalDisk');
   CoUninitialize;
   readln;
end.
Не знаю поможет или нет читай про WMI classes в MSDN
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.09.2010, 15:05   #7
@лександр
 
Регистрация: 23.09.2010
Сообщений: 4
По умолчанию

В гугле я уже неделю роюсь.
Одни работают на IDE, но неработают на SATA. Другие наоборот.
Нужен серийник не логического диска а физического, так как первый легко изменить.
@лександр вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как определить заводской номер устройства usb накопителя? defen Помощь студентам 5 24.12.2010 03:14
Серийный номер флешки best island Общие вопросы .NET 0 19.07.2010 01:47
Ассемблем(Серийный номер тома) для MS-DOS fastmen Помощь студентам 1 11.06.2010 18:27
Серийный номер HDD Mikola-TEAM Win Api 1 25.05.2010 19:38
Серийный номер жесткого диска Dj_smart Паскаль, Turbo Pascal, PascalABC.NET 0 04.01.2009 21:19