線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:6397
推到 Plurk!
推到 Facebook!

如何抓取window的序號

答題得分者是:yps
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-09-02 12:38:04 IP:210.85.xxx.xxx 未訂閱
請問各位! 有沒有最快的方法可以讀取到Window的註冊序號, 我想用一支程式可以讀到window98,me,xp,2000.. 的安裝時註冊序號, 是否有範例程式? 謝謝!
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-09-02 18:05:48 IP:61.221.xxx.xxx 未訂閱
引言: 請問各位! 有沒有最快的方法可以讀取到Window的註冊序號, 我想用一支程式可以讀到window98,me,xp,2000.. 的安裝時註冊序號, 是否有範例程式? 謝謝!
windows 98的安裝序號在Registry中,可以用程式直接改Registry, 但Windows 2000/XP就不知存在那? ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-09-04 03:56:05 IP:61.70.xxx.xxx 未訂閱
試一下 C:\WINNT\system32\ msiexec.exe sysocmgr.exe webfldrs.msi 這3個檔案其中一個可以知道 應該是webfldrs.msi 小心執行先將網路線拔掉 執行2次就出來了 2000序號Registry中好像是2進位執ㄝ 抱歉忘記了 http://www.winguides.com/registry/ 可以自行參考看看 可以下載軟體ㄛ 發表人 - jackkcg 於 2002/09/04 04:12:20
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-09-04 13:15:27 IP:210.85.xxx.xxx 未訂閱
引言: 試一下 C:\WINNT\system32\ msiexec.exe sysocmgr.exe webfldrs.msi 這3個檔案其中一個可以知道 應該是webfldrs.msi 小心執行先將網路線拔掉 執行2次就出來了 2000序號Registry中好像是2進位執ㄝ 抱歉忘記了 http://www.winguides.com/registry/ 可以自行參考看看 可以下載軟體ㄛ 發表人 - jackkcg 於 2002/09/04 04:12:20
sorry, 我可能沒有說清楚, 我是要以Delphi程式撰寫可以讀序號的功能, 而且功能要涵蓋95,98,xp,me,2000範圍!
yps
一般會員


發表:9
回覆:3
積分:7
註冊:2002-03-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-09-06 11:34:05 IP:210.63.xxx.xxx 未訂閱
或許這就是你要的,但只能偵測98、2000 pro
unit Unit1;    interface    uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, HyperLink;    type
  TForm1 = class(TForm)
    Button1: TButton;
    Label5: TLabel;
    GroupBox1: TGroupBox;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    Label1: TLabel;
    HyperLink1: THyperLink;
    procedure Button1Click(Sender: TObject);
    procedure RadioButton1Click(Sender: TObject);
    procedure RadioButton2Click(Sender: TObject);
  private
    { Private declarations }
  public
    path_1 : string;
    key_1 : string;
    { Public declarations }
  end;    var
  Form1: TForm1;    implementation
uses Registry;
{$R *.DFM}    procedure TForm1.Button1Click(Sender: TObject);
var
  Reg: TRegistry;    begin
  Reg := TRegistry.Create;
  try
    reg.rootkey:=HKEY_LOCAL_MACHINE;
    if reg.openkey(path_1,FALSE) then
    begin
      label5.caption:=reg.ReadString(key_1);
      if label5.caption='' then
         ShowMessage('選取版本不正確!');
    end
    else
      ShowMessage('REGISITY路徑錯誤!');
  finally
    reg.closekey;
    reg.free;
  end;
end;    procedure TForm1.RadioButton1Click(Sender: TObject);
begin
  path_1 :='\Software\Microsoft\Windows\CurrentVersion';
  key_1 :='productkey';
end;    procedure TForm1.RadioButton2Click(Sender: TObject);
begin
  path_1 :='\Software\Microsoft\Windows Nt\CurrentVersion';
  key_1 :='productID';
end;    end.
發表人 - yps 於 2002/09/06 11:54:42
------
--------------------
DELPHI ROCK & ROLL
--------------------
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-09-06 21:54:52 IP:210.85.xxx.xxx 未訂閱
謝謝! 雖無法全部抓到, 不過仍解決我部份的瓶頸!
bugmans
高階會員


發表:95
回覆:322
積分:188
註冊:2003-04-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-04-16 19:15:43 IP:125.225.xxx.xxx 未訂閱
Microsoft Product Key Viewer
http://www.planet-source-code.com/vb/scr ipts/ShowCode.asp?txtCodeId=1454&lngWId=7
請將全形空白去掉就是正確的網址

在我的電腦(Windows2000 SP4)測試的結果和這兩個軟體相同
EVEREST 4.0試用版 http://www.lavalys.com/
Keyfinder http://www.magicaljellybean.com/keyfinder.shtml


關鍵在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DigitalProductId處的資料
經過解碼的程序可以將註冊碼解出來
<textarea class="delphi" rows="10" cols="60" name="code"> 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; </textarea>
在google搜尋DecodeProductKey副程式,原來這資料到處都有
http://www.google.com.tw/search?hl=zh-TW&q=DecodeProductKey&meta=

相同問題
http://delphi.ktop.com.tw/board.php?cid=30&fid=69&tid=87008
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-04-29 02:29:49 IP:61.67.xxx.xxx 未訂閱
感謝 bugmans 兄回覆,
竟然能翻出將近5年前的舊帳, 小弟不勝感激, 有空我會試試看!
系統時間:2024-04-26 22:03:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!