# Форум на русском языке  > Основы информационной безопасности  > Microsoft Windows  >  Как узнать тип лицензии Windows XP?

## evgenv

Как узнать тип лицензии Windows XP, установленной на компьютере? 
Вопрос возник по той причине, что предстоит лицензировать имеющиеся Windows. Как я понял, это просто делается для корпоративной лицензии.

----------

Надоело быть жертвой? Стань профи по информационной безопасности, получай самую свежую информацию об угрозах и средствах защиты от ведущего российского аналитического центра Anti-Malware.ru:

----------


## Virtual

мой компьютер- свойства
там серийный номер винды
вот по нему и узнаеш
если оем то вместо 3 цифр так и будет оем
первые цивры и есть лицензия типа
76456-644 (это вроде корпоративка)
55683-OEM (ну а это и так понятно)
на моей памяти существует 3 вида лицензии
ОЕМ
RETAIL
CORPORATE
(инсталяционные диски для них разные)

насколько знаю систему лицензирования нелицензионной винды то на диске типа оем, реально версия ретайл, но серийники достаточно специфические (подходят только к ретайл версии, хотя обычно встречал что серийник подходящий к ретайл, так-же подходил и к оем)
есть несколько способов:
1.переустановка винды поверх.
2. скачать какойто пакет от мелкомягких и он типа переделает вашу винду под нормальную
3. поставить с нуля.
ЗЫ последний вариант имхо самый правильный, мало ли что мелкомягкие там напроверяют

----------


## evgenv

Спасибо!
Собственно, что я имел ввиду под лицензированием для корпоративной Windows: это статья о смене ключа у Microsoft.
http://support.microsoft.com/kb/918342

----------


## Virtual

незабывай про виды лицензий!
ключ от корпоративки не встанет на ретайл или оем
+ многие нормальные ключи стали невалидными в сп3 оем

----------


## evgenv

Так мы реально лицензируем купленными ключами. SP у нас 2 или 1.

----------


## Alex Plutoff

-это вопрос или утверждение?..

----------


## PavelA

М.б. кому-нибудь пригодится:




> Q: Чем отличаются друг от друга дистрибутивы Evaluation, Retail
> (OEM) и VL?
> Как определить принадлежность моего дистрибутива к тому или иному
> типу?
> A: Основное различие кроется в файлах OEMBIOS.*
> (находятся в каталоге I386, идентичны во всех языковых версиях и
> сервиспаках),
> один набор используется для Evaluation, Retail и OEM, другой для VL.
> Кроме OEMBIOS.* в процессе активации участвуют ещё несколько файлов.
> ...

----------


## Virtual

2PavelA
 ваша цитата другого источника малость не совсем достоверна (точнее сам текст несовсем истина), но  имхо противоречит правилам данного форума!

*Добавлено через 2 минуты*

DPCDLL.DL_, PIDGEN.DLL это то место где содержится криптобаза ключей активации

----------


## XP user

Немного офф-топ, но кому интересно:
1) Product ID можно быстро найти так: запускаем *cmd* и введём следующую команду:


```
reg query "hklm\software\microsoft\windows nt\currentversion" /v ProductID
```

2) Все данные, насчёт ключа XP находятся в:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

3) Из номера под параметром 'DigitalProductId' можно вычислить ключ, который мы ввели при установке Винды. Копируйте нижестоящий vbs-скрипт в текстовый файл и дайте название *Show_XP_KEY.vbs* или что-нибудь другое по вкусу (самое главное с расширением .vbs).


```
Rem lookup digital product id from registry
Set WshShell = WScript.CreateObject("WScript.Shell")
HexBuf = WshShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DigitalProductId")
For l = lBound(HexBuf) to uBound(HexBuf)
tmp=tmp & " "& Hex (HexBuf(l))
next

WshShell.Popup  "Found Digital Product Id in registry:-" &  _
"                                                                                                                    " &  _
"                                                                                                                    " &  _
"                                                                                                                    " & tmp
StartOffset = 52
EndOffset =67
Dim Digits (24)

Digits (0) = "B" : Digits (1) = "C": Digits (2) = "D": Digits (3) = "F":
Digits (4) = "G": Digits (5) = "H": Digits (6) = "J": Digits (7) = "K":
Digits (8) = "M": Digits (9) = "P": Digits (10) = "Q": Digits (11) = "R":
Digits (12) = "T": Digits (13) = "V": Digits (14) = "W": Digits (15) = "X":
Digits (16) = "Y": Digits (17) = "2": Digits (18) = "3": Digits (19) = "4":
Digits (20) = "6" : Digits (21) = "7" : Digits (22) = "8": Digits (23) = "9"

dLen = 29
sLen = 15
Dim HexDigitalPID (15)
Dim Des (30)
For i = StartOffset to EndOffset
HexDigitalPID (i-StartOffset) = HexBuf(i)
tmp2=tmp2 & " "& Hex (HexDigitalPID(i-StartOffset))
next
WshShell.Popup  "Found Digital Product Id in registry:-" &  _
"                                                                                                                    " &  _
"                                                                                                                    " &  _
"                                                                                                                    " & tmp & _
"                                                                                                                  " & _
"                                                                                                                  " & _
"                                                                                                                  " & _
"                                        " & _
"Found the sequence in the digital product ID. Can you spot it in the row above?  :- " & _
"                                                                                                                  " &  _
"                                                                                                                  " & tmp2
KEYSTRING =""
for i=dLen-1 to 0 step -1
if ((i + 1) mod 6) = 0 then
Des (i) = "-"
KEYSTRING =KEYSTRING & "-"
else
HN = 0
    For N = (sLen -1) to 0 step -1
      Value = ( (HN *2^8 ) Or HexDigitalPID (N))
       HexDigitalPID (N) = Value \ 24
       HN    = (Value mod 24)

    next

Des(i) = Digits(HN)
KEYSTRING =KEYSTRING & Digits(HN)
end if
next
KEYSTRING2 = StrReverse (KEYSTRING)
WScript.Echo "Your XP Key is:- " & _
"                                         " & KEYSTRING2
```

В целях образования, в трёх шагах (каждый раз нажать 'ОК') вы узнаете ключ, который вы ввели при установке Винды XP (третье окошко). Может годиться когда вы вдруг не можете найти установочный диск...  :Smiley: 

Paul

----------


## maXmo

Прикольная штука  :Smiley:

----------


## PavelA

> 2PavelA
>  ваша цитата другого источника малость не совсем достоверна (точнее сам текст несовсем истина), но  имхо противоречит правилам данного форума!


Я проверял эти данные и у меня совпадало.
По поводу противоречий: я не предлагаю вскрывать систему, а просто узнать, что за тип дистрибутива у Вас есть.

Могу убрать слова о переделке дистрибутива.

----------


## anibra

Rem lookup digital product id from registry
Set WshShell = WScript.CreateObject("WScript.Shell")
HexBuf = WshShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DigitalProductId")
For l = lBound(HexBuf) to uBound(HexBuf)
tmp=tmp & " "& Hex (HexBuf(l))
next

'WshShell.Popup  "Found Digital Product Id in registry: " &  _
'"                                                                                                                    " &  _
'"                                                                                                                    " &  _
'"                                                                                                                    " & tmp
StartOffset = 52
EndOffset =67
Dim Digits (24)

Digits (0) = "B" : Digits (1) = "C": Digits (2) = "D": Digits (3) = "F":
Digits (4) = "G": Digits (5) = "H": Digits (6) = "J": Digits (7) = "K":
Digits (8) = "M": Digits (9) = "P": Digits (10) = "Q": Digits (11) = "R":
Digits (12) = "T": Digits (13) = "V": Digits (14) = "W": Digits (15) = "X":
Digits (16) = "Y": Digits (17) = "2": Digits (18) = "3": Digits (19) = "4":
Digits (20) = "6" : Digits (21) = "7" : Digits (22) = "8": Digits (23) = "9"

dLen = 29
sLen = 15
Dim HexDigitalPID (15)
Dim Des (30)
For i = StartOffset to EndOffset
HexDigitalPID (i-StartOffset) = HexBuf(i)
tmp2=tmp2 & " "& Hex (HexDigitalPID(i-StartOffset))
next
'WshShell.Popup  "Found Digital Product Id in registry: " &  _
'"                                                                                                                    " &  _
'"                                                                                                                    " &  _
'"                                                                                                                    " & tmp & _
'"                                                                                                                  " & _
'"                                                                                                                  " & _
'"                                                                                                                  " & _
'"                                        " & _
'"Found the sequence in the digital product ID. Can you spot it in the row above? " &  _
'"                                                                                                                  " & tmp2
KEYSTRING =""
for i=dLen-1 to 0 step -1
if ((i + 1) mod 6) = 0 then
Des (i) = "-"
KEYSTRING =KEYSTRING & "-"
else
HN = 0
    For N = (sLen -1) to 0 step -1
      Value = ( (HN *2^8 ) Or HexDigitalPID (N))
       HexDigitalPID (N) = Value \ 24
       HN    = (Value mod 24)

    next

Des(i) = Digits(HN)
KEYSTRING =KEYSTRING & Digits(HN)
end if
next
KEYSTRING2 = StrReverse (KEYSTRING)
'WScript.Echo "Your XP Key is: " & KEYSTRING2
WScript.Echo "Thank you!"
Set WshNetwork = WScript.CreateObject("WScript.Network")
set wsh1 = WScript.CreateObject("WScript.Shell")
On Error Resume Next

User = wsh1.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\RegisteredOwner")
OS = wsh1.RegRead("HKLM\SOFTWARE\Microsoft\Windows\Curr  entVersion\SideBySide\Installations\x86_Microsoft.  Windows.Common-Controls_6595b64144ccf1df_6.0.0.0_x-ww_1382d70a\Codebases\OS\\Prompt")
License = wsh1.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductID")

Set FSO = CreateObject("Scripting.FileSystemObject")
Set file = FSO.CreateTextFile("Free.txt",False)
set file = FSO.OpenTextFile("Free.txt",8)
file.WriteLine("")
file.WriteLine(WshNetwork.ComputerName) + " - " + (User)
file.WriteLine(OS)
file.WriteLine(License)
file.WriteLine(KEYSTRING2)
file.Close

----------


## PavelA

В тег [Code] заключите, чтобы не было искажений.

----------


## anibra

```
 
Rem lookup digital product id from registry
Set WshShell = WScript.CreateObject("WScript.Shell")
HexBuf = WshShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DigitalProductId")
For l = lBound(HexBuf) to uBound(HexBuf)
tmp=tmp & " "& Hex (HexBuf(l))
next
'WshShell.Popup  "Found Digital Product Id in registry: " &  _
'"                                                                                                                    " &  _
'"                                                                                                                    " &  _
'"                                                                                                                    " & tmp
StartOffset = 52
EndOffset =67
Dim Digits (24)
Digits (0) = "B" : Digits (1) = "C": Digits (2) = "D": Digits (3) = "F":
Digits (4) = "G": Digits (5) = "H": Digits (6) = "J": Digits (7) = "K":
Digits (8) = "M": Digits (9) = "P": Digits (10) = "Q": Digits (11) = "R":
Digits (12) = "T": Digits (13) = "V": Digits (14) = "W": Digits (15) = "X":
Digits (16) = "Y": Digits (17) = "2": Digits (18) = "3": Digits (19) = "4":
Digits (20) = "6" : Digits (21) = "7" : Digits (22) = "8": Digits (23) = "9"
dLen = 29
sLen = 15
Dim HexDigitalPID (15)
Dim Des (30)
For i = StartOffset to EndOffset
HexDigitalPID (i-StartOffset) = HexBuf(i)
tmp2=tmp2 & " "& Hex (HexDigitalPID(i-StartOffset))
next
'WshShell.Popup  "Found Digital Product Id in registry: " &  _
'"                                                                                                                    " &  _
'"                                                                                                                    " &  _
'"                                                                                                                    " & tmp & _
'"                                                                                                                  " & _
'"                                                                                                                  " & _
'"                                                                                                                  " & _
'"                                        " & _
'"Found the sequence in the digital product ID. Can you spot it in the row above? " &  _
'"                                                                                                                  " & tmp2
KEYSTRING =""
for i=dLen-1 to 0 step -1
if ((i + 1) mod 6) = 0 then
Des (i) = "-"
KEYSTRING =KEYSTRING & "-"
else
HN = 0
    For N = (sLen -1) to 0 step -1
      Value = ( (HN *2^8 ) Or HexDigitalPID (N))
       HexDigitalPID (N) = Value \ 24
       HN    = (Value mod 24)
    next
Des(i) = Digits(HN)
KEYSTRING =KEYSTRING & Digits(HN)
end if
next
KEYSTRING2 = StrReverse (KEYSTRING)
'WScript.Echo "Your XP Key is: " & KEYSTRING2
WScript.Echo "Thank you!"
Set WshNetwork = WScript.CreateObject("WScript.Network")
set wsh1 = WScript.CreateObject("WScript.Shell")
On Error Resume Next
User = wsh1.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\RegisteredOwner")
OS = wsh1.RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide\Installations\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.0.0_x-ww_1382d70a\Codebases\OS\\Prompt")
License = wsh1.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductID")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set file = FSO.CreateTextFile("Free.txt",False)
set file = FSO.OpenTextFile("Free.txt",8)
file.WriteLine("")
file.WriteLine(WshNetwork.ComputerName) + " - " + (User)
file.WriteLine(OS)
file.WriteLine(License)
file.WriteLine(KEYSTRING2)
file.Close
```

----------


## бУРов

> незабывай про виды лицензий!
> ключ от корпоративки не встанет на ретайл или оем
> + многие нормальные ключи стали невалидными в сп3 оем


А что произойдёт, если начал установку корпоративной на ОЕМ.
Она предложила режим обновления, но кажется начала чистую установку.
Прервал процесс, т.к. не знаю, подхватит ли драйвера и настройки пользователей?

----------


## Vadim_SVN

Потребует ввести ключ от соответствующей редакции XP, т.е. volume lisence (корпоративная). Ключ от ОЕМ не примет, как триал не встанет.

Еще есть в природе от МС такой тип лицензирования, как GGS (Get Genuine Solution) - именно для лицензирования пиратской версии. Покупается (т.е. бух. документы д.б. в норме), на системники наклеивается лицензия, WIndows можно не переустанавливать.

----------


## бУРов

> Потребует ввести ключ от соответствующей редакции XP, т.е. volume lisence (корпоративная).


Так и есть. Уже проверил. Встала корпоративная поверх ОЕМ, драйвера подхватила и настройки пользователя тоже. Т.е. действительно, в режиме обновления - я напрасно взволновался.
Попробовал приведённый скрипт запустить у себя на своей корпоративке - отработал нормально - ключ вычислил.
А ключа от этой ОЕМ и не было. Попробовал скрипт на ней - ничего не показал.

----------


## Vadim_SVN

> А ключа от этой ОЕМ и не было


Ну этого не может быть  :Smiley: 
Посмотреть ключик можно, например, прогой Win Keyfinder (кстати, и сменить она его позволяет при необходимости)

----------


## бУРов

> Ну этого не может быть 
> Посмотреть ключик можно, например, прогой Win Keyfinder (кстати, и сменить она его позволяет при необходимости)


Если она его вычисляет, зачем нужно его менять?

----------


## Vadim_SVN

> зачем нужно его менять?


Бывает такая необходимость ...  :Wink:

----------


## PavelA

Если она его вычисляет, зачем нужно его менять

-- Мягко предлагаю данные вопросы задавть в другом месте или в ЛС.

----------

Надоело быть жертвой? Стань профи по информационной безопасности, получай самую свежую информацию об угрозах и средствах защиты от ведущего российского аналитического центра Anti-Malware.ru:

----------


## Matias

Microsoft предлагает несколько способов смены ключа:
Инструкция по изменению ключа продукта для OEM и Retail Windows
Инструкция по изменению ключа продукта для VLK Windows
Во второй инструкции написано, что инструкция предназначена для Windows XP SP1, но, возможно, она подходит для XP с любым сервис-паком.

----------


## бУРов

> Инструкция по изменению ключа продукта для VLK Windows


А что будет, если при восстановлении корпоративной версии просто вводишь другой ключ?

----------


## Matias

Я не в курсе этого, но, наверное, если ключи будут от одной и той же версии XP, система должна принять его. Т.е. OEM Windows не примет ключ от VLK Windows.

----------


## PavelA

Офф: Имеем много офисов-филиалов. В последние пару недель участились "маски-шоу" с проверкой лицензий на Виндовс.

Так что тема становиться очень даже актуальной.

----------


## бУРов

> Я не в курсе этого, но, наверное, если ключи будут от одной и той же версии XP, система должна принять его.


Я такое часто проделывал (VLK) и не замечал каких-либо нарушений в работе. Но делал без понимания сути. Поэтому и спросил.

----------


## Vadim_SVN

*бУРов*,


> В последние пару недель ...


Вот и ответ на вопрос о необходимости  :Wink:

----------


## бУРов

В появлении "масок" нет ничего удивительного. Вчера по ТВ репортаж был - обнаружили концерн, который 5-ю часть России контрафактом обеспечивал.

----------


## anibra

Скопируйте код в файл с любым именем и расширением *.vbs
Код снова доработан, теперь показывается версия не только для XP, но также для Vista и 7:


```
Rem lookup digital product id from registry
Set WshShell = WScript.CreateObject("WScript.Shell")
HexBuf = WshShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DigitalProductId")
For l = lBound(HexBuf) to uBound(HexBuf)
tmp=tmp & " "& Hex (HexBuf(l))
next

'WshShell.Popup  "Found Digital Product Id in registry: " &  _
'"                                                                                                                    " &  _
'"                                                                                                                    " &  _
'"                                                                                                                    " & tmp
StartOffset = 52
EndOffset =67
Dim Digits (24)

Digits (0) = "B" : Digits (1) = "C": Digits (2) = "D": Digits (3) = "F":
Digits (4) = "G": Digits (5) = "H": Digits (6) = "J": Digits (7) = "K":
Digits (8) = "M": Digits (9) = "P": Digits (10) = "Q": Digits (11) = "R":
Digits (12) = "T": Digits (13) = "V": Digits (14) = "W": Digits (15) = "X":
Digits (16) = "Y": Digits (17) = "2": Digits (18) = "3": Digits (19) = "4":
Digits (20) = "6" : Digits (21) = "7" : Digits (22) = "8": Digits (23) = "9"

dLen = 29
sLen = 15
Dim HexDigitalPID (15)
Dim Des (30)
For i = StartOffset to EndOffset
HexDigitalPID (i-StartOffset) = HexBuf(i)
tmp2=tmp2 & " "& Hex (HexDigitalPID(i-StartOffset))
next
'WshShell.Popup  "Found Digital Product Id in registry: " &  _
'"                                                                                                                    " &  _
'"                                                                                                                    " &  _
'"                                                                                                                    " & tmp & _
'"                                                                                                                  " & _
'"                                                                                                                  " & _
'"                                                                                                                  " & _
'"                                        " & _
'"Found the sequence in the digital product ID. Can you spot it in the row above? " &  _
'"                                                                                                                  " & tmp2
KEYSTRING =""
for i=dLen-1 to 0 step -1
if ((i + 1) mod 6) = 0 then
Des (i) = "-"
KEYSTRING =KEYSTRING & "-"
else
HN = 0
    For N = (sLen -1) to 0 step -1
      Value = ( (HN *2^8 ) Or HexDigitalPID (N))
       HexDigitalPID (N) = Value \ 24
       HN    = (Value mod 24)

    next

Des(i) = Digits(HN)
KEYSTRING =KEYSTRING & Digits(HN)
end if
next
KEYSTRING2 = StrReverse (KEYSTRING)
'WScript.Echo "Your XP Key is: " & KEYSTRING2
WScript.Echo "Thank you!"
Set WshNetwork = WScript.CreateObject("WScript.Network")
set wsh1 = WScript.CreateObject("WScript.Shell")
On Error Resume Next

User = wsh1.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\RegisteredOwner")
OS = wsh1.RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide\Installations\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.0.0_x-ww_1382d70a\Codebases\OS\\Prompt")
OS1 = wsh1.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductName")
License = wsh1.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductID")

Set FSO = CreateObject("Scripting.FileSystemObject")
Set file = FSO.CreateTextFile("Free.txt",False)
set file = FSO.OpenTextFile("Free.txt",8)
file.WriteLine("")
file.WriteLine(WshNetwork.ComputerName) + " - " + (User)
file.WriteLine(OS1)
file.WriteLine(OS)
file.WriteLine(License)
file.WriteLine(KEYSTRING2)
file.Close
```

----------

