Войти

Показать полную графическую версию : [решено] как узнать и сменить серийник XP из cmd ?


Страниц : [1] 2

Ingolder
16-08-2010, 11:48
нужны две отдельные команды(скрипта). первая - чтобы узнать текущий серийник,
вторая - чтобы сменить на другой. Главное чтобы всё можно было сделать из командной строки.
помогите плиз.

NiOl
16-08-2010, 13:09
Ну, певая проблема легко решается сторонней утилитой ProduKey от NirSoft (http://www.nirsoft.net)

@for /f "tokens=3 delims= " %%S in ('@ProduKey.exe /WindowsKeys 1 /OfficeKeys 0 /IEKeys 0 /SQLKeys 0 /ExchangeKeys 0 /stab ""') do echo %%S

По второй проблеме ничего хорошего не нашлось - уж очень многое зависит от версии и типа операционки... максимум, что накопал в гугле: Левый сайтик (http://wgapatcher.ru/?p=changekey)
К сожалению каюсь, опыта работы с лицензиями очень и очень мало и ограничен он только установкой "легалайзов" и готовых компов с предустановками.

Ingolder
16-08-2010, 20:06
по первой проблеме - Непредвиденное появление: %%S
по второй - этот способ я уже находил, и он требует гуёвого взаимодействия, а не через цмд.

Vadikan
16-08-2010, 22:29
Ingolder, ОС не указана, как всегда, видимо ХР, ибо на Vista/7 уже догуглил бы до slmgr.vbs.

В ХР, возможно, это наведет на какие-то мысли... How can I change the volume licensing product key on a Windows XP SP1-Based Computer? (http://www.petrikb.com/change_the_serial_in_windows_xp.htm).

Ingolder
17-08-2010, 11:30
Vadikan, да, именно XP :) sp3 rus

я не разбираюсь в vbs к сожалению.
попытка запуска скрипта выдаёт http://savepic.ru/1543758.jpg
запускаю естественно, С:\ChangeVLKey2600.vbs ключ

deepred
17-08-2010, 11:42
Ingolder,

Замените в первых шести строках сценария символы " \ " на " ' "

Petya V4sechkin
17-08-2010, 12:21
запускаю естественно, С:\ChangeVLKey2600.vbs ключ
Не тот.
В статье KB328874 (http://support.microsoft.com/kb/328874/ru) читаем:

Мы рекомендуем использовать сценарий ChangeVLKey2600.vbs на компьютерах под управлением системы Windows XP, на которых не установлена Windows XP с пакетом обновления 1 (SP1) или более поздние версии Windows XP, а на компьютерах, на которых установлена Windows XP с пакетом обновления 1 (SP1) или более поздние версии Windows XP, использовать сценарий ChangeVLKeySP1.vbs

NiOl
17-08-2010, 12:32
по первой проблеме - Непредвиденное появление: %%S »

яйк! Попробуем в 3 строчки (и убидитесь, что после delims= стоит именно символ табуляции)
@Echo off
setlocal EnableExtensions
for /f "tokens=3 delims= " %%S in ('ProduKey.exe /WindowsKeys 1 /OfficeKeys 0 /IEKeys 0 /SQLKeys 0 /ExchangeKeys 0 /stab ""') do echo %%S

Iska
17-08-2010, 12:39
NiOl, думаю, дело было скорее всего в том, что Ingolder запускал напрямую, без использования пакетного файла.

Ingolder
17-08-2010, 14:28
Iska, ага.
спасибо, товарищи, заработало. То, что надо!


Petya V4sechkin, я пробовал оба. одно и то же. оба одинаковую ошибку выдают.

El Sanchez
17-08-2010, 19:04
Ingolder, вдогонку:
первая - чтобы узнать текущий серийник »

@Echo Off
SetLocal EnableDelayedExpansion

For /F "Tokens=3" %%A In ('Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v DigitalProductId 2^>nul^|Find "REG_BINARY"') Do (
Set Chars="BCDFGHJKMPQRTVWXY2346789"
Set DigitalProductId=%%A
Set DigitalProductId=!DigitalProductId:~104,30!
For /L %%B In (0, 1, 24) Do (
Set Var=0
For /L %%C In (28, -2, 0) Do (
Call Set /A Var=0x!DigitalProductId:~%%C,2!+!Var!*256
Set /A BytesBeforeOffset=%%C
Set /A BytesAfterOffset=%%C+2
Set /A BytesChanged="(!Var!/24)&255"
Call :ChangeDigitalProductId "!BytesBeforeOffset!" "!BytesChanged!" "!BytesAfterOffset!"
Set /A Var=!Var!%%24
)
Set /A Num=!Var!+1
Call Set LicenseKey=%%Chars:~!Num!,1%%!LicenseKey!
)
)
If Not "!LicenseKey!"=="" (
Echo !LicenseKey:~0,5!-!LicenseKey:~5,5!-!LicenseKey:~10,5!-!LicenseKey:~15,5!-!LicenseKey:~20,5!
) Else (
Echo Get registry data error^^!
)
EndLocal
GoTo:EOF

:ChangeDigitalProductId
Set HexChars=0123456789ABCDEF
If %~2 LSS 16 (
Set /A lBytePos=%~2
Set /A hBytePos=0
) Else (
Set /A lBytePos=%~2%%16
Set /A hBytePos=%~2/16
)
Call Set DigitalProductId=!DigitalProductId:~0,%~1!%%HexChars:~%hBytePos%,1%%%%HexChars:~%lBytePos%,1%%!Digit alProductId:~%~3!

чтобы сменить на другой »
83157

sov44
11-04-2011, 21:12
El Sanchez, подскажите, как вывести тип лицензии Windows (OEM, Retail, VL), Home или Pro ?

sov44
12-04-2011, 11:35
скрипт выводит id windows, по второму значению которого определяется тип лицензии.

@echo off
For /F "Skip=4 Tokens=3 delims= " %%A In ('Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /V ProductId') Do Set Prod=%%A
echo %Prod%
pause
выводится значение типа xxxxx-yyy-zzzzzzz-zzzzz
Не знаю как присвоить второму значению переменную %yyy% и сделать перебор этой переменной с выводом на экран типа лицензии.
Варианты перебора yyy:
yyy = 000, 007, 335 - Retail
yyy = 270, 640-652, 699 - VLK
yyy = OEM - OEM

El Sanchez
12-04-2011, 11:36
как вывести тип лицензии Windows (OEM, Retail, VL), Home или Pro ? »
sov44,

@Echo Off
For /F "Tokens=3" %%A In ('Reg Query HKLM\SYSTEM\Setup\Pid /v Pid^|Find "REG_SZ"') Do Set PID=%%A
For /F "Tokens=1* Delims==" %%A In ('WMIC OS GET Caption /VALUE 2^>nul^|Find "="') Do Set Edition=%%B

Echo Edition: %Edition%
:: CIDs
rem 000 : Other (includes some retail, upgrade and evaluation versions) (includes (some?) MSDNAA discs)
rem 006 : MS or Partner promotions
rem 007 : FIXME : Retail
rem 009 : Not for resale - bundle
rem 011 : Upgrade (XP Home?)
rem 013 : Upgrade (XP Pro)
rem 071 : FIXME : Unknown.
rem 083 : Windows Genuine Advantage
rem OEM : OEM (This does not specify royalty or normal OEM)
rem 270 : Volume License
rem 296 : MSDN
rem 308/347 : Microsoft Action Pack subscription
rem 335 : Retail
rem 640 through 652 : Volume License (usually generated via 270 CID in setupp.ini)
rem 699 : Volume Windows XP Tablet Edition
rem 770 : Retail (at least according to WGA Diagnostic)

If "%PID:~-3%"=="OEM" Echo Channel: OEM
If "%PID:~-3%"=="270" Echo Channel: VLK
:: etc

sov44
12-04-2011, 11:38
El Sanchez, похоже вы меня опередили с ответом :)

в моём серийнике второе значение 640. По идее должно писать VLK, а пишет Caption

El Sanchez
12-04-2011, 12:05
в моём серийнике второе значение 640. По идее должно писать VLK, а пишет Caption »
Токеном ошибся :), исправьте в 3 строке Set Edition=%%A на Set Edition=%%B.
И я не все CID'ы расписывал (см. последние строки, там только OEM и VLK(270)), список CID'ов выше. Нужное сами допишете?

sov44
12-04-2011, 12:24
El Sanchez, всё ОК! Спасибо!
В качестве самообразования, не могли бы вы прокомментировать третью строчку вашего скрипта?

Расписал все CID'ы. Почему то всё равно при значении 640 в pid не приделяется VLK.
VLK определяется, как будто у меня в pid значение 270

Как то непонятно, по какому пути определяется тип лицензии?
в HKEY_LOCAL_MACHINE\SYSTEM\Setup\Pid Pid=xxxxx270
в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion ProductId=xxxxx-640-xxxxxxx-xxxxx

El Sanchez
12-04-2011, 14:11
В качестве самообразования, не могли бы вы прокомментировать третью строчку вашего скрипта? »
WMIC OS GET Caption /VALUE 2>nul|Find "=" - цепочка команд, результат которой будем обрабатывать командой For.
WMIC OS GET Caption /VALUE - при помощи утилиты для работы с WMI получаем значение свойства Caption, доступного в псевдониме OS, в формате свойство=значение (параметр /VALUE); 2>nul - ошибки WMIC перенаправляем в никуда; Find "=" - фильтруем результат WMIC, ищется нужная строка, содержащая символ =.
Далее в For разбиваем результат на подстроки (1-я подстрока это Caption, все остальное идет во 2-ю подстроку - Tokens=1*), где в качестве разделителя подстрок служит символ = (Delims==) и присваиваем переменной Edition значение 2-й подстроки (%%B).

Как то непонятно, по какому пути определяется тип лицензии?
в HKEY_LOCAL_MACHINE\SYSTEM\Setup\Pid Pid=xxxxx270
в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion ProductId=xxxxx-640-xxxxxxx-xxxxx »
Я использовал 1-й вариант.

sov44
12-04-2011, 16:22
El Sanchez, можно ли кроме как WMIC OS GET Caption /VALUE
получить информацию о версии Home / Pro ? Команда хорошо работает под админом, а из-под юзера не хочет.

Iska
12-04-2011, 17:49
Где брали сам список CID'ов?




© OSzone.net 2001-2012