Windows Xp nin Product Keyini Almak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
mahmut
Üye
Mesajlar: 82
Kayıt: 21 May 2004 11:00
Konum: KONYA
İletişim:

Windows Xp nin Product Keyini Almak

Mesaj gönderen mahmut »

Arkadaşlar merhaba forumda arattırdım ama bulamadım.


Xp nin Serial numarasını regeditten göremiyoruz sanırm. Acaba seri numarasını nasıl görebiliriz kodlar ile

teşekkürler
Hayat Hayatı Anlamaya Yetmeyecek Kadar Kısadır. Önemli Olan Hayatı Anlamaya Çalışmak Değil Hayattayken Hayatta Olan İnsanlara Bir Eser Bırakabilmek veya Onlara Yardımcı Olabilmektir.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Registry'de kayıtlı...

Anahter yolu :

Kod: Tümünü seç

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
Resim
Resim ....Resim
NeverFear
Üye
Mesajlar: 69
Kayıt: 20 Tem 2004 09:41
Konum: İzmir

Mesaj gönderen NeverFear »

sanırım arkadaşın sorusu başka. ProductKey Windows kitapçığının üzerindeki ve PC üzerine yapıştırılan etikette yazılı olan. Evet... bunu öğrenmenin yolu var elbette.

"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" yazılı olan ise ProductID kurulum sonucunda kayıt bilgilerine yerleşen ve Bilgisayarım\Özellikler\Genel sekmesinde gözüken.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Hayır hocam, tam da istediği şey yani oradaki DigitalProductId anahtarındaki verinin 52. sırası dahil takip eden 14 byte ile elde edilebilir.
Resim
Resim ....Resim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Kodları arşivimden buldum...

Kod: Tümünü seç

Function ProductKeyBul : String;
//bkz. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
const
  RegAnahtar   = 'Software\Microsoft\Windows NT\CurrentVersion';
  RegDeger     = 'DigitalProductId';
  KarakterSeti = 'BCDFGHJKMPQRTVWXY2346789';
var
  RegBaglanti : HKEY;
  Kod15  : array[0.. 14] of Byte;
  Islem15: array[0.. 14] of Byte;
  Kod200 : array[0..199] of Byte;
  Tip    : DWORD; // Parametre boş kalmasın diye...
  Uz200  : DWORD;
  Sayac,
  Sayac2 : Integer;
  Islem  : DWORD;
  Sonuc  : string;
begin
  Result := '';
  ZeroMemory(@Kod200[0], 200);
  RegOpenKey(HKEY_LOCAL_MACHINE, RegAnahtar, RegBaglanti);
  Uz200  := 200; // ilk 200 byte veryi alacağımız için
  RegQueryValueEx(RegBaglanti, RegDeger, nil, @Tip, @Kod200[0], @Uz200);
  RegCloseKey(RegBaglanti);

// $34 (52 dec) offset'den itibaren 14 byte bizim Windows keyimiz
  for Sayac := 0 to 14 do begin
    Kod15[Sayac] := Kod200[Sayac + $34];
  end;

// İkinci ve asıl aşamaya geçtik...
// Kodları gerçek Windows ProductID Formatına dönüştürüyoruz..
  Sonuc  := '';
  for Sayac := 0 to 14 do Islem15[Sayac] := Kod15[Sayac];
  for Sayac := 25 downto 0 do begin
    Islem := 0;
    for Sayac2 := 14 downto 0 do begin
      Islem := Islem shl $08;
      Inc(Islem, Islem15[Sayac2]);
      Islem15[Sayac2] := (Islem div $18) and $ff;
      Islem := Islem mod $18;
    end;
    Sonuc := Sonuc + KarakterSeti[Islem + 1];
  end;

  // Sonucu tersine çeviriyoruz...
  Result := Result + Sonuc[Length(Sonuc) - 1];
  for Sayac := Length(Sonuc) - 2 downto 1 do begin
    if (Sayac mod 5 = 0) then Result := Result + '-';
    Result := Result + Sonuc[Sayac];
  end;
end;
Resim
Resim ....Resim
mahmut
Üye
Mesajlar: 82
Kayıt: 21 May 2004 11:00
Konum: KONYA
İletişim:

Mesaj gönderen mahmut »

Hocam tesekkurler cok isime yaradi ALLAH senden razi olsun
Hayat Hayatı Anlamaya Yetmeyecek Kadar Kısadır. Önemli Olan Hayatı Anlamaya Çalışmak Değil Hayattayken Hayatta Olan İnsanlara Bir Eser Bırakabilmek veya Onlara Yardımcı Olabilmektir.
Cevapla