Re: licencja Worda

Autor: Michal Biek <mb_at_2.pl.invalid>
Data: Tue 28 Feb 2006 - 22:47:57 MET
Message-ID: <du2gf2$8al$1@opal.icpnet.pl>
Content-Type: text/plain; format=flowed; charset="iso-8859-2"; reply-type=response

Piotr Palusiński log:
> Użytkownik "misoch" <misoch@ms.inc> napisał w wiadomości
> news:du0tok$rjf$1@inews.gazeta.pl
>> Witam!
>> Mam w pracy zainstalowane na komputerach wiele różnych wersji Worda (97,
>> 2000, XP, 2003). Niestety nie wiem która licencja jest do której
>> instalacji. Jak rozpoznać która licencja - nr seryjny - odpowiada któremu
>> zainstalowanemu Wordowi?
> Oj z tym bedziesz mial klopot, Office nie zpisuje seriala do rejestru w
> postacji rozpoznawalnej.
> Nadany jest jedynie: ProductID = np. 51367-010-7114645-02048
[...]
SRY za kłopot;-) ... no i np. Borland Delphi(n) czyli "DigitalProductId" vel
(mój) serial Office 2k3 w Rejestrze, a może z Rejestru...!:-)
------
unit ProductKey;
{$DEFINE SeparateByMinus}
[...]
interface
function GetProductKey: string;
implementation
uses Windows;
function GetProductKey: string;
const
KeyPath =
'SOFTWARE\Microsoft\Office\11.0\Registration\{90110419-6000-11D3-8CFE-0150048383C9}';
KeyValue = 'DigitalProductId';
KeyChars: 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');
var
InfoKey: HKEY;
InfoType: DWORD;
Data: array [1..$A8] of Byte;
BinaryKey: array [0..14] of Byte;
DecodedKey: array [0..24] of Char;
DataSize: DWORD;
A: Cardinal;
i, j: Integer;
begin
if RegOpenKeyEx(HKEY_LOCAL_MACHINE, KeyPath, 0, KEY_READ, InfoKey) =
ERROR_SUCCESS then
begin
DataSize := SizeOf(Data);
if RegQueryValueEx(InfoKey, KeyValue, nil, @InfoType, @Data, @DataSize) =
ERROR_SUCCESS then
begin
CopyMemory(@BinaryKey, @Data[$35], SizeOf(BinaryKey));
for i := High(DecodedKey) downto Low(DecodedKey) do
begin
A := 0;
for j := High(BinaryKey) downto Low(BinaryKey) do
begin
A := (A shl 8) + BinaryKey[j];
BinaryKey[j] := A div 24;
A := A mod 24;
end;
DecodedKey[i] := KeyChars[A];
end;
{$IFDEF SeparateByMinus}
for i := Low(DecodedKey) to High(DecodedKey) do
begin
Result := Result + DecodedKey[i];
if ((i + 1) mod 5 = 0) and (i < High(DecodedKey)) then
Result := Result + '-';
end;
{$ELSE}
Result := Result + DecodedKey;
{$ENDIF}
[...]
end;
end.
-----
... i przyznaję rację. Jednak chyba łatwiej jest skorzystać z gotowych
program(c)ów.

-- 
"Mów o mnie dobrze i wspominaj ciepło ...!"
http://www.miscsoftware.com/offkey.php
http://www.nirsoft.net/utils/product_cd_key_viewer.html
http://www.korben.tk/ 
Received on Tue Feb 28 22:50:08 2006

To archiwum zostało wygenerowane przez hypermail 2.1.8 : Tue 28 Feb 2006 - 23:42:04 MET