Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] как узнать и сменить серийник XP из cmd ?

Ответить
Настройки темы
CMD/BAT - [решено] как узнать и сменить серийник XP из cmd ?

Аватара для Ingolder

Старожил


Сообщения: 318
Благодарности: 9

Профиль | Отправить PM | Цитировать


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

Отправлено: 11:48, 16-08-2010

 

Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1265
Благодарности: 1025

Профиль | Отправить PM | Цитировать


Ingolder, вдогонку:
Цитата 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%%!DigitalProductId:~%~3!
Цитата Ingolder:
чтобы сменить на другой »
http://forum.oszone.net/showthread.php?t=83157
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:04, 17-08-2010 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 2183
Благодарности: 721

Профиль | Отправить PM | Цитировать


El Sanchez, подскажите, как вывести тип лицензии Windows (OEM, Retail, VL), Home или Pro ?

Последний раз редактировалось sov44, 11-04-2011 в 21:57.


Отправлено: 21:12, 11-04-2011 | #12


Ветеран


Сообщения: 2183
Благодарности: 721

Профиль | Отправить PM | Цитировать


скрипт выводит 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

Отправлено: 11:35, 12-04-2011 | #13


Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1265
Благодарности: 1025

Профиль | Отправить PM | Цитировать


Цитата sov44:
как вывести тип лицензии 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

Последний раз редактировалось El Sanchez, 12-04-2011 в 11:55.

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:36, 12-04-2011 | #14


Ветеран


Сообщения: 2183
Благодарности: 721

Профиль | Отправить PM | Цитировать


El Sanchez, похоже вы меня опередили с ответом

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

Последний раз редактировалось sov44, 12-04-2011 в 11:48.


Отправлено: 11:38, 12-04-2011 | #15


Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1265
Благодарности: 1025

Профиль | Отправить PM | Цитировать


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

Отправлено: 12:05, 12-04-2011 | #16


Ветеран


Сообщения: 2183
Благодарности: 721

Профиль | Отправить PM | Цитировать


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

Последний раз редактировалось sov44, 12-04-2011 в 13:43.


Отправлено: 12:24, 12-04-2011 | #17


Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1265
Благодарности: 1025

Профиль | Отправить PM | Цитировать


Цитата sov44:
В качестве самообразования, не могли бы вы прокомментировать третью строчку вашего скрипта? »
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).

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

Отправлено: 14:11, 12-04-2011 | #18


Ветеран


Сообщения: 2183
Благодарности: 721

Профиль | Отправить PM | Цитировать


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

Отправлено: 16:22, 12-04-2011 | #19


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Где брали сам список CID'ов?

Отправлено: 17:49, 12-04-2011 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] как узнать и сменить серийник XP из cmd ?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] узнать количество файлов в каталоге через CMD toro Скриптовые языки администрирования Windows 5 04-12-2013 06:31
Использование - Как сменить серийник у office 2003 iopushnev Лицензирование продуктов Microsoft 4 28-08-2008 19:45
Разное - [решено] как восстановить лицензионный серийник win xp Оleg Microsoft Windows 2000/XP 4 04-09-2007 02:42
[решено] Как сменить серийник? SaimonW Microsoft Windows 2000/XP 9 26-07-2006 14:08
Как из Win2000Server cmd узнать IP клиента? k1sa Сетевые технологии 13 23-02-2006 11:53




 
Переход