View Full Version : حرفه ای: خواندن مقادیر باینری از رجیستری و دیکدآنها
  
بهروز عباسی
یک شنبه 03 اردیبهشت 1391, 11:05 صبح
درود به همه برنامه نویس ها
من میخوام یه مقدار رشته ای رو که در آدرس زیر(رو سیستم من) هست به دست بیارم
اما این مقدار بصورت باینری در اجیستری ذخیره شده و من نمیتونم به اون رشته دسترسی پیدا کنم
ممنون میشم کسی کمک کنه این رشته رو از اون مقدار باینری بخونم
ادرس
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\m ssmbios\Data
مقدار مورد نظر SMBiosData
Mask
یک شنبه 03 اردیبهشت 1391, 12:08 عصر
اینو نوشتم. ببین کارت راه میوفته.
function GetRegInt(Root:HKEY;Key,Value:string):Integer;
var R:TRegistry;
begin
  try
    R:=TRegistry.Create;
    try
      R.RootKey:=Root;
      if R.KeyExists(Key) then
      begin
        R.OpenKey(Key,false);
        if R.ValueExists(Value) then
          Result:=R.ReadInteger(Value)
        else
          Result:=0;
      end else
        Result:=0;
    finally
      R.CloseKey;
      R.Free
    end;
  except
    Result:=0;
  end;
end;
بهروز عباسی
یک شنبه 03 اردیبهشت 1391, 18:13 عصر
ممنون از کمک اما من می خوام یه رشته رو برگردونه
این تابع این کارو برای بدست آوردن پروداکت کی ویندوز انجام میده من هم چین چیزی لازم دارم تا اطلاعات سیستم (مدل مین بردو...) از رجیستری بخونم.
var
  Reg: TRegistry;
  BinarySize: integer;
  HexBuf: array of Byte;
  Temp: TStringlist;
  KeyName, KeyName2, SubKeyName, PN, PID, DN: string;
function DecodeProductKey(const HexSrc: array of Byte): string;
const
  StartOffset: integer = $34;         // Offset 34 = Array[52]
  EndOffset: integer = $34 + 15;      // Offset 34 + 15(Bytes) = Array[64]
  Digits: array[0..23] of CHAR = ('B', 'C', 'D', 'F', 'G', 'H', 'J', 'K', 'M', 'P', 'Q', 'R', 'T', 'V', 'W', 'X', 'Y', '2', '3', '4', '6', '7', '8', '9');
  dLen: integer = 29;                 // Length of Decoded Product Key
  sLen: integer = 15;                 // Length of Encoded Product Key in Bytes (An total of 30 in chars)
var HexDigitalPID: array of cardinal;
    Des: array of Char;
    I, N: integer;
    HN, Value: cardinal;
begin
  SetLength(HexDigitalPID, dLen);
  for I := StartOffset to EndOffset do
   begin
    HexDigitalPID[I - StartOffSet] := HexSrc[I];
   end;
  SetLength(Des, dLen + 1);
  for I := dLen - 1 downto 0 do
   begin
    if (((I + 1) mod 6) = 0) then
     begin
      Des[I] := '-';
     end
    else
     begin
      HN := 0;
      for N := sLen - 1 downto 0 do
       begin
        Value := (HN shl 8) or HexDigitalPID[N];
        HexDigitalPID[N] := value div 24;
        HN := Value mod 24;
       end;
      Des[I] := Digits[HN];
     end;
   end;
  Des[dLen] := Chr(0);
  for I := 0 to Length(Des) do
   begin
    Result := Result + Des[I];
   end;
end;
function TSysInfo.GetWinProductKey: String;
begin
  Reg := TRegistry.Create;
  try
   Reg.RootKey := HKEY_LOCAL_MACHINE;
   if Reg.OpenKeyReadOnly('\SOFTWARE\Microsoft\Windows NT\CurrentVersion') then
    begin
     if Reg.GetDataType('DigitalProductId') = rdBinary then
      begin
       PN := (Reg.ReadString('ProductName'));
       PID := (Reg.ReadString('ProductID'));
       binarySize := Reg.GetDataSize('DigitalProductId');
       SetLength(HexBuf, binarySize);
       if BinarySize > 0 then
        begin
         Reg.ReadBinaryData('DigitalProductId', HexBuf[0], binarySize);
        end;
      end;
    end;
  finally
   FreeAndNil(Reg);
  end;
  Result := '';
  Result := 'Windows Product Key: '+DecodeProductKey(HexBuf);
end;
بهروز عباسی
چهارشنبه 06 اردیبهشت 1391, 19:48 عصر
این مقدار باینریه که من میخوام متن درونش رو بخونم
00000000   00 02 04 24 a3 08 00 00 - 00 18 00 00 01 02 00 e0  ...$£..........à
00000010   03 07 80 9e cb 7f 00 00 - 00 00 33 05 ff ff ff ff  ....Ë.....3.ÿÿÿÿ
00000020   41 77 61 72 64 20 53 6f - 66 74 77 61 72 65 20 49  Award Software I
00000030   6e 74 65 72 6e 61 74 69 - 6f 6e 61 6c 2c 20 49 6e  nternational, In
00000040   63 2e 00 46 36 00 30 33 - 2f 32 30 2f 32 30 30 38  c..F6.03/20/2008
00000050   00 00 01 1b 01 00 01 02 - 03 04 00 00 00 00 00 00  ................
00000060   00 00 00 00 00 00 00 00 - 00 00 06 05 06 47 69 67  .............Gig
00000070   61 62 79 74 65 20 54 65 - 63 68 6e 6f 6c 6f 67 79  abyte Technology
00000080   20 43 6f 2e 2c 20 4c 74 - 64 2e 00 4d 35 32 4c 2d   Co., Ltd..M52L-
00000090   53 33 00 20 00 20 00 20 - 00 20 00 00 02 08 02 00  S3. . . . ......
000000a0   01 02 03 04 47 69 67 61 - 62 79 74 65 20 54 65 63  ....Gigabyte Tec
000000b0   68 6e 6f 6c 6f 67 79 20 - 43 6f 2e 2c 20 4c 74 64  hnology Co., Ltd
000000c0   2e 00 4d 35 32 4c 2d 53 - 33 00 78 2e 78 00 20 00  ..M52L-S3.x.x. .
000000d0   00 03 11 03 00 01 03 02 - 03 04 02 02 02 02 00 00  ................
000000e0   00 00 47 69 67 61 62 79 - 74 65 20 54 65 63 68 6e  ..Gigabyte Techn
000000f0   6f 6c 6f 67 79 20 43 6f - 2e 2c 20 4c 74 64 2e 00  ology Co., Ltd..
00000100   20 00 20 00 20 00 00 04 - 23 04 00 01 03 1d 02 b2   . . ...#......²
00000110   0f 06 00 ff fb 8b 17 03 - 8e c8 00 80 0c 60 09 41  ...ÿû....È...`    A
00000120   04 0a 00 0c 00 ff ff 04 - 05 06 53 6f 63 6b 65 74  .....ÿÿ...Socket
00000130   20 4d 32 00 41 4d 44 00 - 41 4d 44 20 41 74 68 6c   M2.AMD.AMD Athl
00000140   6f 6e 28 74 6d 29 20 36 - 34 20 58 32 20 44 75 61  on(tm) 64 X2 Dua
00000150   6c 20 43 6f 72 65 20 50 - 72 6f 63 65 73 73 6f 72  l Core Processor
00000160   20 34 36 30 30 2b 00 20 - 00 20 00 20 00 00 05 18   4600+. . . ....
00000170   05 00 06 04 03 03 0a 0c - 00 14 00 02 04 06 00 07  ................
00000180   00 08 00 09 00 04 20 00 - 00 06 0c 06 00 01 1f 20  ...    .. ........ 
00000190   13 00 8a 8a 00 41 30 00 - 00 06 0c 07 00 01 2f 20  .....A0......./ 
000001a0   13 00 7f 7f 00 41 31 00 - 00 06 0c 08 00 01 3f 20  .....A1.......? 
000001b0   13 00 7f 7f 00 41 32 00 - 00 06 0c 09 00 01 4f 20  .....A2....    ..O 
000001c0   13 00 7f 7f 00 41 33 00 - 00 07 13 0a 00 01 80 01  .....A3.........
000001d0   80 00 80 00 20 00 20 00 - 00 02 02 02 49 6e 74 65  .... . .....Inte
000001e0   72 6e 61 6c 20 43 61 63 - 68 65 00 00 07 13 0b 00  rnal Cache......
000001f0   01 80 01 80 00 80 00 20 - 00 20 00 00 02 02 02 49  ....... . .....I
00000200   6e 74 65 72 6e 61 6c 20 - 43 61 63 68 65 00 00 07  nternal Cache...
00000210   13 0c 00 01 81 01 00 02 - 00 02 20 00 20 00 00 02  .......... . ...
00000220   02 02 45 78 74 65 72 6e - 61 6c 20 43 61 63 68 65  ..External Cache
00000230   00 00 07 13 0d 00 01 01 - 00 00 04 00 00 20 00 20  ............. . 
00000240   00 00 02 02 02 45 78 74 - 65 72 6e 61 6c 20 43 61  .....External Ca
00000250   63 68 65 00 00 08 09 0e - 00 01 16 02 00 ff 50 52  che...    ......ÿPR
00000260   49 4d 41 52 59 20 49 44 - 45 00 20 00 00 08 09 0f  IMARY IDE. ...    .
00000270   00 01 16 02 00 ff 53 45 - 43 4f 4e 44 41 52 59 20  .....ÿSECONDARY 
00000280   49 44 45 00 20 00 00 08 - 09 10 00 01 17 02 00 a1  IDE. ...    ......¡
00000290   46 44 44 00 20 00 00 08 - 09 11 00 01 18 02 08 07  FDD. ...    .......
000002a0   43 4f 4d 31 00 20 00 00 - 08 09 12 00 01 18 02 08  COM1. ...    ......
000002b0   07 43 4f 4d 32 00 20 00 - 00 08 09 13 00 01 05 02  .COM2. ...    .....
000002c0   05 05 4c 50 54 31 00 20 - 00 00 08 09 14 00 01 ff  ..LPT1. ...    ...ÿ
000002d0   02 0f 0d 4b 65 79 62 6f - 61 72 64 00 20 00 00 08  ...Keyboard. ...
000002e0   09 15 00 01 0f 02 0f 0e - 50 53 2f 32 20 4d 6f 75      .......PS/2 Mou
000002f0   73 65 00 44 65 74 65 63 - 74 65 64 00 00 08 09 16  se.Detected...    .
00000300   00 01 00 02 12 10 55 53 - 42 00 20 00 00 09 0d 17  ......USB. ..    ..
00000310   00 01 06 05 03 04 06 00 - 06 05 50 43 49 00 00 09  ..........PCI..    
00000320   0d 18 00 01 06 05 04 04 - 07 00 06 05 50 43 49 00  ............PCI.
00000330   00 09 0d 19 00 01 06 05 - 04 04 08 00 06 05 50 43  .    ............PC
00000340   49 00 00 09 0d 1a 00 01 - 06 05 03 04 09 00 06 05  I..    ........    ...
00000350   50 43 49 00 00 0d 16 1b - 00 03 00 00 00 00 00 00  PCI.............
00000360   00 00 00 00 00 00 00 00 - 00 00 01 6e 7c 55 53 7c  ...........n|US|
00000370   69 73 6f 38 38 35 39 2d - 31 00 6e 7c 55 53 7c 69  iso8859-1.n|US|i
00000380   73 6f 38 38 35 39 2d 31 - 00 72 7c 43 41 7c 69 73  so8859-1.r|CA|is
00000390   6f 38 38 35 39 2d 31 00 - 61 7c 4a 50 7c 75 6e 69  o8859-1.a|JP|uni
000003a0   63 6f 64 65 00 00 10 0f - 1c 00 03 03 03 00 00 20  code........... 
000003b0   00 fe ff 04 00 20 00 00 - 11 1b 1d 00 1c 00 fe ff  .þÿ.. ........þÿ
000003c0   40 00 40 00 00 04 09 00 - 01 02 02 00 00 20 03 03  @.@...    ...... ..
000003d0   04 05 06 41 30 00 42 61 - 6e 6b 30 2f 31 00 20 00  ...A0.Bank0/1. .
000003e0   20 00 20 00 20 00 00 11 - 1b 1e 00 1c 00 fe ff 40   . . ........þÿ@
000003f0   00 40 00 00 00 09 00 01 - 02 02 00 00 20 03 03 04  .@...    ...... ...
00000400   05 06 41 31 00 42 61 6e - 6b 32 2f 33 00 20 00 20  ..A1.Bank2/3. . 
00000410   00 20 00 20 00 00 11 1b - 1f 00 1c 00 fe ff 40 00  . . ........þÿ@.
00000420   40 00 00 00 09 00 01 02 - 02 00 00 20 03 03 04 05  @...    ...... ....
00000430   06 41 32 00 42 61 6e 6b - 34 2f 35 00 20 00 20 00  .A2.Bank4/5. . .
00000440   20 00 20 00 00 11 1b 20 - 00 1c 00 fe ff 40 00 40   . .... ...þÿ@.@
00000450   00 00 00 09 00 01 02 02 - 00 00 20 03 03 04 05 06  ...    ...... .....
00000460   41 33 00 42 61 6e 6b 36 - 2f 37 00 20 00 20 00 20  A3.Bank6/7. . . 
00000470   00 20 00 00 13 0f 21 00 - 00 00 00 00 ff ff 0f 00  . ....!.....ÿÿ..
00000480   1c 00 01 20 00 00 14 13 - 22 00 00 00 00 00 ff ff  ... ....".....ÿÿ
00000490   0f 00 1d 00 21 00 01 00 - 00 20 00 00 14 13 23 00  ....!.... ....#.
000004a0   00 00 00 00 00 00 00 00 - 1e 00 21 00 01 00 00 20  ..........!.... 
000004b0   00 00 14 13 24 00 00 00 - 00 00 00 00 00 00 1f 00  ....$...........
000004c0   21 00 01 00 00 20 00 00 - 14 13 25 00 00 00 00 00  !.... ....%.....
000004d0   00 00 00 00 20 00 21 00 - 01 00 00 20 00 00 20 0b  .... .!.... .. .
000004e0   26 00 00 00 00 00 00 00 - 00 20 00 00 bc f4 27 00  &........ ..¼ô'.
000004f0   00 00 00 40 00 00 00 00 - 00 00 00 00 00 00 00 00  ...@............
00000500   01 06 16 00 00 00 00 00 - 03 00 00 00 00 00 3f 00  ..............?.
00000510   00 00 00 00 01 00 00 00 - 00 00 00 00 02 00 00 00  ................
00000520   00 00 00 00 03 00 00 00 - 00 00 00 00 04 00 00 00  ................
00000530   00 00 00 00 05 00 00 00 - 00 00 00 00 06 00 00 00  ................
00000540   00 00 00 00 07 00 00 00 - 00 00 00 00 40 00 10 0a  ............@...
00000550   00 00 00 00 00 00 00 00 - eb 02 00 ff 01 00 00 00  ........ë..ÿ....
00000560   81 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
00000570   00 00 00 00 00 00 00 00 - 00 00 00 00 60 3f 38 00  ............`?8.
00000580   00 00 00 00 00 00 00 00 - 00 00 00 00 46 00 01 00  ............F...
00000590   00 00 00 00 02 00 00 00 - 00 00 00 00 35 f3 7e 5d  ............5ó~]
000005a0   20 13 12 00 10 00 01 00 - 6b 00 10 74 00 00 00 00   .......k..t....
000005b0   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
000005c0   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
000005d0   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
000005e0   00 00 be d4 28 00 00 00 - 00 00 00 00 00 00 00 00  ..¾Ô(...........
000005f0   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
00000600   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
00000610   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
00000620   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
00000630   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
00000640   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
00000650   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
00000660   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
00000670   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
00000680   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
00000690   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
000006a0   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
000006b0   00 00 00 00 00 00 00 00 - c0 f4 29 00 15 13 16 14  ........Àô).....
000006c0   14 13 14 14 15 00 00 00 - 12 13 12 12 13 12 12 12  ................
000006d0   12 00 00 00 2b 00 00 00 - 00 00 00 00 00 00 00 00  ....+...........
000006e0   00 2f 2f 2f 2f 2f 2f 2f - 2f 00 00 00 00 00 22 32  .////////....."2
000006f0   11 20 20 25 20 10 22 12 - 11 10 20 25 20 00 00 00  .  % ."... % ...
00000700   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
00000710   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
00000720   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
00000730   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
00000740   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
00000750   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
00000760   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
00000770   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
00000780   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
00000790   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
000007a0   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 c2 f4  ..............Âô
000007b0   2a 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  *...............
000007c0   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
000007d0   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
000007e0   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
000007f0   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
00000800   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
00000810   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
00000820   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
00000830   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
00000840   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
00000850   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
00000860   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
00000870   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
00000880   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
00000890   00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ................
000008a0   00 00 00 00 7f 04 2b 00 - 20 00 00                 ......+. ..
بهروز عباسی
چهارشنبه 06 اردیبهشت 1391, 19:56 عصر
راستی متن مورد نظر من ایناست
Gigabyte Technology Co., Ltd M52L-S3
Award Software International, Inc..F6.03/20/2008
که البته روی سیستم های دیگه ممکنه مقدار فرق کنه
N30TheM4TRIX
سه شنبه 06 تیر 1391, 11:50 صبح
سلام حاجی
این کد رو امتحان کن متن بالا رو توی memo1 بنویس برنامه رو اجرا کن خروجی memo2 رو نگاه کن
حاشو ببر
implementation
{$R *.dfm}
type
  TArray = array [0..56] of string;
var
sAr : TArray =('a', 'b', 'c', 'd', 'e', 'f','g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q','r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' ,
                  'A', 'B', 'C', 'D', 'E', 'F','G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q','R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
                  ,'.', ',', ' ','/','\');{, '0', '1','2', '3', '4', '5', '6', '7'
                , '8', '9'); {}
procedure TForm1.Button1Click(Sender: TObject);
var I,J:Integer;
begin
   for I := 1 to Length(Memo1.Text) do
    begin
    for j := 0 to Length(sAr) do
    begin
     if Memo1.Text[i]=sAr[J]then
      Memo2.Text:=Memo2.Text+Memo1.Text[i];
      Application.ProcessMessages;
    end;
    end;
end;
بهروز عباسی
سه شنبه 06 تیر 1391, 12:02 عصر
سلام حاجی
این کد رو امتحان کن متن بالا رو توی memo1 بنویس برنامه رو اجرا کن خروجی memo2 رو نگاه کنگریم علیک درود حاج محمد
اما این کدی که شما دادی چیزی عجیب و غریب تر از اون مقدار اصلی برمیگردونه(جسارت نشه:کف:)
حالا مقداری رو برمی گردونه از کجا بدونم مال CPU یا... هستش ؟؟
BORHAN TEC
سه شنبه 06 تیر 1391, 15:06 عصر
این کاری که شما برای بدست آوردن مشخصات Motherboard انجام می دهید کاملاً غیر اصولی است. برای بدست آوردن مشخصات مادربورد بهتره که از WMI استفاده کنید. در این رابطه قبلاً آقای "علیرضا شیرازی" کدی را در سایت codeproject.com قرار داده اند که می توانید آنرا به راحتی به کدهای دلفی تبدیل کنید. این هم آدرس مقاله مربوطه:
http://www.codeproject.com/Articles/17973/How-To-Get-Hardware-Information-CPU-ID-MainBoard-I
برای تبدیل کد ها هم آدرس زیر میتونه مفید واقع بشه:
http://stackoverflow.com/questions/2497253/how-to-get-motherboard-id-or-serial-number-delphi
بهروز عباسی
سه شنبه 06 تیر 1391, 15:30 عصر
این کاری که شما برای بدست آوردن مشخصات Motherboard انجام می دهید کاملاً غیر اصولی است
اینو میدونم برای این کار از wmi و تا حدی اسمبلی در سی و دلفی استفاده کردم و اطلاعات مورد نظر رو به دست آوردم و مشکلم حل شده
اما می خواستم بدونم چنین داده های رو چطوری باید استفاده کرد همین.
ممنون از کمک
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.