Определение серийного номера usb флэшки по ее букве диска в системе

Фрагмент кода для определения серийного номера флэшки по присвоенной ей системой букве:


function ByteToString(const Value: array of byte): String;
var
I: integer;
S : String;
Letra: char;
flag:integer;
begin
S := '';
flag:=0;
for I := 0 to Length(Value)-1 do
begin
letra := Chr(Value[I]);
if letra='#' then
begin
  flag:=flag+1;
end;
if flag=2 then
begin
   if letra <> '' then
    begin
      S := S + letra;
    end;
end;
end;
S:=copy(S, 2, Length(S));
Result := S;
end;

procedure TForm2.Button1Click(Sender: TObject);
var
Reg:TRegistry;
  I: Integer;
  buf: array [1..512] of byte;
  tmp:string;
  tmp1:string;
  diskLetter:string;
begin
Reg:=TRegistry.Create(KEY_READ);
  try

        diskLetter:= eDIT1.Text; //сюда, передаем букву флешки
        Reg.RootKey := HKEY_LOCAL_MACHINE;
        if Reg.OpenKey('SYSTEM\MountedDevices', true) then
            begin
            tmp:='\DosDevices\'+diskLetter+':';
            if Reg.ValueExists(tmp) then
              begin
                if Reg.ReadBinaryData(tmp, buf, sizeof(buf))>0 then;
                  begin
                      showmessage(ByteToString(buf)); //ByteToString(buf) вернет строку с серийным номером флэшки;
                  end;
              end;
            end;
            Reg.CloseKey;
  finally
    Reg.Free;
  end;
end;


Информация о флэшке хранится в реестре:



и конкретно для каждого устройства тут:



Вот из этого места мы и читаем инфу.

Комментарии (0)

RSS свернуть / развернуть

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.