|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] как узнать и сменить серийник XP из cmd ? |
|
CMD/BAT - [решено] как узнать и сменить серийник XP из cmd ?
|
Старожил Сообщения: 318 |
нужны две отдельные команды(скрипта). первая - чтобы узнать текущий серийник,
вторая - чтобы сменить на другой. Главное чтобы всё можно было сделать из командной строки. помогите плиз. |
|
Отправлено: 11:48, 16-08-2010 |
Ветеран Сообщения: 1273
|
Профиль | Отправить 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:
|
||
Отправлено: 19:04, 17-08-2010 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2196
|
Профиль | Отправить PM | Цитировать El Sanchez, подскажите, как вывести тип лицензии Windows (OEM, Retail, VL), Home или Pro ?
|
Последний раз редактировалось sov44, 11-04-2011 в 21:57. Отправлено: 21:12, 11-04-2011 | #12 |
Ветеран Сообщения: 2196
|
Профиль | Отправить 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 Не знаю как присвоить второму значению переменную %yyy% и сделать перебор этой переменной с выводом на экран типа лицензии. Варианты перебора yyy: yyy = 000, 007, 335 - Retail yyy = 270, 640-652, 699 - VLK yyy = OEM - OEM |
Отправлено: 11:35, 12-04-2011 | #13 |
Ветеран Сообщения: 1273
|
Профиль | Отправить PM | Цитировать Цитата 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 |
Ветеран Сообщения: 2196
|
Профиль | Отправить PM | Цитировать El Sanchez, похоже вы меня опередили с ответом
![]() в моём серийнике второе значение 640. По идее должно писать VLK, а пишет Caption |
Последний раз редактировалось sov44, 12-04-2011 в 11:48. Отправлено: 11:38, 12-04-2011 | #15 |
Ветеран Сообщения: 1273
|
Профиль | Отправить PM | Цитировать Цитата sov44:
![]() И я не все CID'ы расписывал (см. последние строки, там только OEM и VLK(270)), список CID'ов выше. Нужное сами допишете? |
|
Отправлено: 12:05, 12-04-2011 | #16 |
Ветеран Сообщения: 2196
|
Профиль | Отправить 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 |
Ветеран Сообщения: 1273
|
Профиль | Отправить PM | Цитировать Цитата sov44:
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:
|
||
Отправлено: 14:11, 12-04-2011 | #18 |
Ветеран Сообщения: 2196
|
Профиль | Отправить PM | Цитировать |
Отправлено: 16:22, 12-04-2011 | #19 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Где брали сам список CID'ов?
|
Отправлено: 17:49, 12-04-2011 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|