|
Vavag,
Приветствую! Да и вообще тема называется: "Полезные CMD файлы" Тема для готовых решений, а не для обсуждения написания правильности скриптов. rbskin, Вот эту тему: Батники - вопросы и решения специально же создали, чтобы обсуждать там подобные вопросы и не захламлять данный топик (что потом невозможно найти среди хлама нужную инфу/скрипт) |
Отправлено: 11-Май-2018 04:56
(спустя 7 месяцев 27 дней)
Задался вопросом защиты загрузочной флешки от записи. (защита от дурака). Придумал такое вот решение. Было полезно когда полетел хард и была одна только загрузочная флешка. Кроме меня были пользователи, которые могли нечаянно что то удалить Скрипт помещался в автозагрузочный файл на флешке.
Защита флешки от записиrem Забиваем в FlashID айди своей флешки (узнать можно в диспетчере устройств) SET FlashID="USB\VID_058F&PID_6387" rem Скрипт создает два файла (корень диска X) для включения и отключения защиты driveprotect.bat rem и driveprotect_off.bat, после чего driveprotect.bat выполняется. Защита включена. rem выключение защиты - кликаем driveprotect_off.bat rem Запуск с диска X для успешной отработки devcon. Если есть открытые файлы на флешке, devcon rem выдаст ошибку. devcon restart выполняет переподключение флешки, что бы применить ключи реестра. (echo reg add HKLM\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies /v WriteProtect /t REG_DWORD /d 00000001 /f echo devcon restart %FlashID% )>X:\driveprotect.bat (echo reg add HKLM\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies /v WriteProtect /t REG_DWORD /d 00000000 /f echo devcon restart %FlashID% )>X:\driveprotect_off.bat start /MIN /D "x:\" driveprotect.bat |
Отправлено: 11-Май-2018 13:12
(спустя 8 часов)
53685Скрипт помещался в автозагрузочный файл на флешке. Могу ошибаться, но на Win 10 он по дефолту вроде выключен. |
Отправлено: 11-Май-2018 16:24
(спустя 3 часа)
53685Задался вопросом защиты загрузочной флешки от записи. (защита от дурака). Придумал такое вот решение. |
Отправлено: 11-Май-2018 17:05
(спустя 41 минута)
Отправлено: 11-Май-2018 18:14
(спустя 1 час 8 минут)
vovan1982,
Утилиты это хорошо. Захотелось средствами самой системы. Adler, Остался без винта. Использовал WinPE скачанную у соседа с ruтрекера на скорую руку. Этой сборкой оказалась Sergei Strelec Win 10, совершенно случайно, могла быть и другая какая нибудь Поковырялся в ней, добавил в автозапуск. Ну разве что в самой сборке вирусы ;) Использовал как временное решение, не от вирусов а от человеческого фактора. Вопрос про защиту от вируса совсем не стоял. |
Отправлено: 11-Май-2018 18:22
(спустя 8 минут)
Отправлено: 09-Мар-2019 12:40
(спустя 9 месяцев 28 дней)
Хочу поделиться пару скриптами (бат) может пригодится кому Функция, которая проверяет, пуста ли папка@echo off SetLocal EnableExtensions call :IsEmptyFolder echo %errorlevel% pause goto :eof :IsEmptyFolder :: Функция, которая проверяет, пуста ли папка :: %1-вх.параметр - проверяемая папка :: errorlevel 0 - пустая, 1 - есть файлы, 2 - есть каталоги, 3 - есть каталоги и файлы setlocal set EF_Flag=0 set EF_Cur_Flag=0 for /f "delims=" %%A in ('dir /B /A:D "%~1\*"') do set EF_Cur_Flag=2 set /A EF_Flag=%EF_Flag% "|" %EF_Cur_Flag% for /f "delims=" %%A in ('dir /B /A:-D "%~1\*"') do set EF_Cur_Flag=1 set /A EF_Flag=%EF_Flag% "|" %EF_Cur_Flag% endlocal & exit /b %EF_Flag% Умный бэкап или создание и удаление по дате@echo off ::Показать дату, которая была 11 дней назад call :fromnow -11 echo %day%.%mm%.%year% ::Показать дату, которая будет завтра call :fromnow +1 echo %day%.%mm%.%year% pause>nul goto :eof :FromNow setLocal set now=%date% set /a yyyy=%now:~-4% set /a mm=1%now:~3,2%-100 set /a dd=1%now:~,2%-100 set /a JD=%~1+dd-32075+1461*(yyyy+4800+(mm-14)/12)/4+367*(mm-2-(mm-14)/12*12)/12-3*((yyyy+4900+(mm-14)/12)/100)/4 set /a L=JD+68569,N=4*L/146097,L=L-(146097*N+3)/4,I=4000*(L+1)/1461001 set /a L=L-1461*I/4+31,J=80*L/2447,K=L-2447*J/80,L=J/11 set /a J=J+2-12*L,I=100*(N-49)+I+L set /a yyyy=I,mm=100+J,dd=100+K EndLocal&set "year=%yyyy%"&set "mm=%mm:~-2%"&set "day=%dd:~-2%" @Echo off SetLocal EnableExtensions cd /d "%~dp0" call :FromNow if "%mm:~,1%" == "0" set mm=%mm:~-1% if "%day:~,1%" == "0" set day=%day:~-1% chcp 1251 > nul for /f "tokens=%mm%" %%i in ("Январь Февраль Март Апрель Май Июнь Июль Август Сентябрь Октябрь Ноябрь Декабрь") do set month=%%i for /f "tokens=2 delims==" %%a in ('wmic path Win32_LocalTime get DayOfWeek /format:list') do set N=%%a if %N%==1 set "DayOfWeek=Понедельник" if %N%==2 set "DayOfWeek=Вторник" if %N%==3 set "DayOfWeek=Среда" if %N%==4 set "DayOfWeek=Четверг" if %N%==5 set "DayOfWeek=Пятница" if %N%==6 set "DayOfWeek=Суббота" if %N%==0 set "DayOfWeek=Воскресенье" if "%month%" == "Январь" set "mon=Января" if "%month%" == "Февраль" set "mon=Февраля" if "%month%" == "Март" set "mon=Марта" if "%month%" == "Апрель" set "mon=Апреля" if "%month%" == "Май" set "mon=Мая" if "%month%" == "Июнь" set "mon=Июня" if "%month%" == "Июль" set "mon=Июля" if "%month%" == "Август" set "mon=Августа" if "%month%" == "Сентябрь" set "mon=Сентября" if "%month%" == "Октябрь" set "mon=Октября" if "%month%" == "Ноябрь" set "mon=Ноября" if "%month%" == "Декабрь" set "mon=Декабря" set fold="%day%-ое_%mon%_%DayOfWeek%" chcp 866 > nul set folder=Backup\%year%\%month%\%fold% md "%folder%" 2>NUL 1>&2 set Bacup=Bacup_Reestr for /f "tokens=3" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "EditionID"') do set EditID=%%a for /f "tokens=3" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "CurrentBuild"') do set CurVer=%%a if "%CurVer%" == "7600" set VERS=Win7 if "%CurVer%" == "9200" set VERS=Win8 if "%CurVer%" == "9600" set VERS=Win8.1 if "%CurVer%" GTR "10000" set "VERS=Win10" if not exist %Bacup%\ md %Bacup% for %%i in ( HKEY_CLASSES_ROOT HKEY_CURRENT_USER HKEY_LOCAL_MACHINE HKEY_USERS HKEY_CURRENT_CONFIG ) do ( call :Exp %%i ) call :Back EndLocal Exit /B :Exp [Hive Name] echo [%~1] reg export "%~1" "%Bacup%\%~1.reg" /y Exit /B :Back copy "%Bacup%\*.reg" "%Bacup%\Bacup_Reestr.reg" >NUL SetLocal EnableDelayedExpansion set H=!TIME:~0,2! set M=!TIME:~3,2! set S=!TIME:~6,2! set DT=%H%.%M%.%S% set now=%DATE% Rar.exe A -ep1 -sfx -inul -m5 "%folder%\%Bacup%[!now!][!DT!]_!VERS!_%EditID%" "%Bacup%" EndLocal if exist "%folder%\%Bacup%[*][*]_*_%EditID%.*" ( RD /s /q "%Bacup%\" forfiles /p "Backup\%year%" /S /D -14 /M *.* /C "cmd /c del /f /a /q @file" 2>nul 1>&2 for /f "tokens=*" %%i in ('dir /b /s /ad "Backup\%year%"') do rd /q "%%i" 2>nul 1>&2 ) Exit /B :FromNow setLocal set now=%date% set /a yyyy=%now:~-4% set /a mm=1%now:~3,2%-100 set /a dd=1%now:~,2%-100 set /a JD=%~1+dd-32075+1461*(yyyy+4800+(mm-14)/12)/4+367*(mm-2-(mm-14)/12*12)/12-3*((yyyy+4900+(mm-14)/12)/100)/4 set /a L=JD+68569,N=4*L/146097,L=L-(146097*N+3)/4,I=4000*(L+1)/1461001 set /a L=L-1461*I/4+31,J=80*L/2447,K=L-2447*J/80,L=J/11 set /a J=J+2-12*L,I=100*(N-49)+I+L set /a yyyy=I,mm=100+J,dd=100+K endLocal&set year=%yyyy%&set mm=%mm:~-2%&set day=%dd:~-2% Exit /B @Echo off SetLocal EnableExtensions Title cd /d "%~dp0" set fil=%Temp%\Backup_Reestr.xml echo ^<^?xml version="1.0" encoding="UTF-16"^?^>>%fil% echo ^<Task version="1.3" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task"^>>>%fil% echo ^<RegistrationInfo^>>>%fil% echo ^<Date^>2014-08-13T13:14:16.4833168^</Date^>>>%fil% echo ^</RegistrationInfo^>>>%fil% echo ^<Triggers^>>>%fil% echo ^<CalendarTrigger^>>>%fil% echo ^<StartBoundary^>2014-08-13T13:13:03.5882678^</StartBoundary^>>>%fil% echo ^<Enabled^>true^</Enabled^>>>%fil% echo ^<RandomDelay^>PT10M^</RandomDelay^>>>%fil% echo ^<ScheduleByDay^>>>%fil% echo ^<DaysInterval^>1^</DaysInterval^>>>%fil% echo ^</ScheduleByDay^>>>%fil% echo ^</CalendarTrigger^>>>%fil% echo ^</Triggers^>>>%fil% echo ^<Principals^>>>%fil% echo ^<Principal id="Author"^>>>%fil% echo ^<GroupId^>S-1-5-32-544^</GroupId^>>>%fil% echo ^<RunLevel^>HighestAvailable^</RunLevel^>>>%fil% echo ^</Principal^>>>%fil% echo ^</Principals^>>>%fil% echo ^<Settings^>>>%fil% echo ^<MultipleInstancesPolicy^>IgnoreNew^</MultipleInstancesPolicy^>>>%fil% echo ^<DisallowStartIfOnBatteries^>true^</DisallowStartIfOnBatteries^>>>%fil% echo ^<StopIfGoingOnBatteries^>true^</StopIfGoingOnBatteries^>>>%fil% echo ^<AllowHardTerminate^>true^</AllowHardTerminate^>>>%fil% echo ^<StartWhenAvailable^>true^</StartWhenAvailable^>>>%fil% echo ^<RunOnlyIfNetworkAvailable^>false^</RunOnlyIfNetworkAvailable^>>>%fil% echo ^<IdleSettings^>>>%fil% echo ^<StopOnIdleEnd^>true^</StopOnIdleEnd^>>>%fil% echo ^<RestartOnIdle^>false^</RestartOnIdle^>>>%fil% echo ^</IdleSettings^>>>%fil% echo ^<AllowStartOnDemand^>true^</AllowStartOnDemand^>>>%fil% echo ^<Enabled^>true^</Enabled^>>>%fil% echo ^<Hidden^>true^</Hidden^>>>%fil% echo ^<RunOnlyIfIdle^>false^</RunOnlyIfIdle^>>>%fil% echo ^<DisallowStartOnRemoteAppSession^>false^</DisallowStartOnRemoteAppSession^>>>%fil% echo ^<UseUnifiedSchedulingEngine^>false^</UseUnifiedSchedulingEngine^>>>%fil% echo ^<WakeToRun^>false^</WakeToRun^>>>%fil% echo ^<ExecutionTimeLimit^>P3D^</ExecutionTimeLimit^>>>%fil% echo ^<Priority^>7^</Priority^>>>%fil% echo ^</Settings^>>>%fil% echo ^<Actions Context="Author"^>>>%fil% echo ^<Exec^>>>%fil% echo ^<Command^>mshta.exe^</Command^>>>%fil% echo ^<Arguments^>vbscript:close(createobject("wscript.shell").run("%~dp0Backup_Reestr_Windows.bat",0))^</Arguments^>>>%fil% echo ^</Exec^>>>%fil% echo ^</Actions^>>>%fil% echo ^</Task^>>>%fil% SCHTASKS /Query /TN "\Њ®Ё § ¤ Ёп\Backup_Reestr" 2>NUL 1>&2 SCHTASKS /Delete /TN "Њ®Ё § ¤ Ёп\Backup_Reestr" /F 2>NUL 1>&2 SchTasks /Create /TN "Њ®Ё § ¤ Ёп\Backup_Reestr" /xml "%fil%" 2>NUL 1>&2 SCHTASKS /Query /TN "\Њ®Ё § ¤ Ёп\Backup_Reestr" del /f /q "%fil%" Pause >NUL EndLocal Exit /B проверка программ в автозагрузке@echo off SetLocal EnableExtensions EnableDelayedExpansion color 17 set z=0 set N=0 for /f "tokens=2 delims==" %%i in ('2^>NUL WMIC Startup get Name /format:list') do set /a z+=1 echo Программ в автозагрузке: [%z%] echo ****************************** echo: for /f "tokens=2 delims==" %%i in ('2^>NUL WMIC Startup get Name /format:list') do ( set /a N+=1 echo !N!. %%~i ) Pause >NUL EndLocal Exit /B длинная портянка[code]Private Const C_Global_Data = "*"Private Const C_Q_Global = "SoftwareLicensingProduct" Private Const C_Q_Office = "OfficeSoftwareProtectionProduct" Private Const C_Q_Global_Servise = "SoftwareLicensingService" Private Const C_Q_Office_Servise = "OfficeSoftwareProtectionService" Private Const C_PG_Windows = "Windows" Private Const C_PG_Office = "Office" Const C_KMSclient = "VOLUME_KMSCLIENT" Const C_KMSserver = "VOLUME_KMS" private const ProductIsPrimarySkuSelectClause = "ID, ApplicationId, PartialProductKey, Description, Name" Private Const WindowsAppId = "55c92734-d682-4d71-983e-d6ec3f16059f" Private Const PartialProductKeyNonNullWhereClause = "PartialProductKey <> null" Private Const EmptyWhereClause = "" Private objLocator Private objWMIService Private WshShell Private displayDate iQuiteCode = 0 OutLine = String(46, "=") private const DefaultPort = "1688" private const HR_S_OK = 0 private const HR_ERROR_FILE_NOT_FOUND = &H80070002 private const HR_SL_E_GRACE_TIME_EXPIRED = &HC004F009 private const HR_SL_E_NOT_GENUINE = &HC004F200 private const HR_SL_E_PKEY_NOT_INSTALLED = &HC004F014 private const HR_INVALID_ARG = &H80070057 private const HR_ERROR_DS_NO_SUCH_OBJECT = &H80072030 g_EchoString = "" Set objLocator = CreateObject("WbemScripting.SWbemLocator") Set objWMIService = objLocator.ConnectServer(".", "root\cimv2") Set WshShell = CreateObject("WScript.Shell") Set collItems = objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem") For Each i in collItems strVersion = i.Version Name = i.Caption Next Version = WshShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CurrentVersion") If InStr(Name, "Microsoft") > 0 Then Name = Replace(Name, "Microsoft ", "") ElseIf InStr(Name, "Майкрософт") > 0 Then Name = Replace(Name, "Майкрософт ", "") End If ChecVersion() WScript.Quit(iQuiteCode) ' Display Prouduct Processing Private Sub QuerySting (Servise, ProductClass) Dim Products Dim Product On Error Resume Next For Each Product in GetProductCollection(ProductIsPrimarySkuSelectClause, PartialProductKeyNonNullWhereClause, ProductClass) LineOut "Версия службы лицензирования программного обеспечения: " & GetServiceObject("Version", Servise).Version LineOut "" LineOut OutLine LineOut "Имя: " & Product.Name LineOut "Описание: " & Product.Description LineOut "Идентификатор активации: " & Product.ID LineOut "Идентификатор приложения: " & Product.ApplicationID Set objProduct = GetProductObject(ProductIsPrimarySkuSelectClause, "ID='" & Product.ID & "'", ProductClass) For Each Product1 in GetProductCollection(C_Global_Data, "ID='" & Product.ID & "'", ProductClass) Select Case Product1.LicenseStatus Case 0 strLicenseStatus = "Нелицензированный." Case 1 strLicenseStatus = "Имеет лицензию." Case 2 strLicenseStatus = "Начальный льготный период." Case 3 strLicenseStatus = "Дополнительный льготный период (срок действия лицензии KMS истек, или конфигурация оборудования компьютера не соответствует допустимой)." Case 4 strLicenseStatus = "Льготный период для неподлинной версии." Case 5 strLicenseStatus = "Уведомление." Case 6 strLicenseStatus = "Расширенный льготный период." Case Else strLicenseStatus = "Состояние лицензии неизвестно." End Select bTBL = IsTBL(Product1.Description) bAVMA = IsAVMA(Product1.Description) bKmsClient = IsProductKMS(Product1.Description) bKmsHost = IsProductKMShost(Product1.Description) LS = Product1.LicenseStatus If Product1.GenuineStatus = 0 Then GenuineStatus = "Подлинная версия." Else GenuineStatus = "Не имеет лицензии" End If LineOut "Расширенный PID: " & Product1.ProductKeyID If (Version > "6.1") Then LineOut "Канал ключей продуктов: " & Product1.ProductKeyChannel End If LineOut "Идентификатор установки: " & Product1.OfflineInstallationId If (NOT bKmsClient) AND (NOT bAVMA) Then strUrl = Product1.ProcessorURL If strUrl <> "" Then LineOut "URL-адрес сертификата процессора: " & strUrl End If strUrl = Product1.MachineURL If strUrl <> "" Then LineOut "URL-адрес сертификата компьютера: " & strUrl End If strUrl = Product1.UseLicenseURL If strUrl <> "" Then LineOut "Используйте URL-адрес лицензии: " & strUrl End If strUrl = Product1.ProductKeyURL If strUrl <> "" Then LineOut "URL-адрес сертификата ключа продукта: " & strUrl End If strUrl = Product1.ValidationURL If strUrl <> "" Then LineOut "URL-адрес проверки: " & strUrl End If End If If Product1.PartialProductKey <> "" Then LineOut "Частичный ключ продукта: " & Product1.PartialProductKey Else LineOut "Лицензия не используется." End If LineOut "Статус лицензии: " & GenuineStatus LineOut "Состояние лицензии: " & strLicenseStatus If LS = 0 Then Set displayDate = CreateObject("WBemScripting.SWbemDateTime") displayDate.Value = Product1.EvaluationEndDate LineOut "Дата окончания пробного периода: " & displayDate.GetVarDate ElseIf LS = 1 Then gpMin = Product1.GracePeriodRemaining gpDay = GetDaysFromMins(gpMin) If Product1.GracePeriodRemaining <> 0 Then If bTBL Then LineOut "Срок истечения активации по времени: " & DateAdd("n",Product1.GracePeriodRemaining, Now) & " " & gpMin & " " & "мин" & " (" & gpDay & " дн." & ")" ElseIf bAVMA Then LineOut "Срок действия автоматической активации виртуальной машины истекает: " & DateAdd("n",Product1.GracePeriodRemaining, Now) & " " & gpMin & " " & "мин" & " (" & gpDay & " дн." & ")" ElseIf bKmsClient Then LineOut "Срок активации корпоративных лицензий истечет : " & DateAdd("n",Product1.GracePeriodRemaining, Now) LineOut "Срок активации корпоративных лицензий истечет через: " & gpMin & " " & "мин" & " (" & gpDay & " дн." & ")" End If End If ElseIf LS = 2 Then gpMin = Product1.GracePeriodRemaining gpDay = GetDaysFromMins(gpMin) LineOut "Срок окончания начального льготного периода: " & DateAdd("n",Product1.GracePeriodRemaining, Now) & " " & gpMin & " " & "мин" & " (" & gpDay & " дн." & ")" ElseIf LS = 3 Then gpMin = Product1.GracePeriodRemaining gpDay = GetDaysFromMins(gpMin) LineOut "Срок окончания дополнительного льготного периода: " & DateAdd("n",Product1.GracePeriodRemaining, Now) & " " & gpMin & " " & "мин" & " (" & gpDay & " дн." & ")" ElseIf LS = 4 Then gpMin = Product1.GracePeriodRemaining gpDay = GetDaysFromMins(gpMin) LineOut "Срок окончания льготного периода для неподлинной версии: " & DateAdd("n",Product1.GracePeriodRemaining, Now) & " " & gpMin & " " & "мин" & " (" & gpDay & " дн." & ")" ElseIf LS = 5 Then If Product1.LicenseStatusReason <> 0 Then LineOut "Причина режима уведомления: " & "("&"0x" & CStr(Hex(Product1.LicenseStatusReason))&")" & " " & ReadResources(CStr(Hex(Product1.LicenseStatusReason))) End If ElseIf LS = 6 Then gpMin = Product1.GracePeriodRemaining gpDay = GetDaysFromMins(gpMin) LineOut "Срок окончания расширенного льготного периода: " & DateAdd("n",Product1.GracePeriodRemaining, Now) & " " & gpMin & " " & "мин" & " (" & gpDay & " дн." & ")" End If If (InStr(Product1.Name, C_PG_Windows) > 0) Then LineOut "Оставшееся число возвращений к исходному состоянию активации Windows: " & GetServiceObject("RemainingWindowsReArmCount", Servise).RemainingWindowsReArmCount If (Version > "6.1") And (InStr(Product1.Name, C_PG_Windows) > 0) Then LineOut "Оставшееся число возвратов к исходному состоянию активации SKU: " & Product1.RemainingSkuReArmCount End If ElseIf (InStr(ProductClass, "SoftwareLicensingProduct") > 0) And (InStr(Product.Name, C_PG_Office) > 0) Then LineOut "Оставшееся число возвращений к исходному состоянию активации приложения: " & Product1.RemainingAppReArmCount LineOut "Оставшееся число возвратов к исходному состоянию активации SKU: " & Product1.RemainingSkuReArmCount End If Set displayDate = CreateObject("WBemScripting.SWbemDateTime") displayDate.Value = Product1.TrustedTime LineOut "Доверенное время: " & displayDate.GetVarDate If (Version > "6.1") Then If (Product1.VLActivationTypeEnabled = 1) Then LineOut "Настроенный тип активации: Active Directory" ElseIf (Product1.VLActivationTypeEnabled = 2) Then LineOut "Настроенный тип активации: сервер управления ключами" ElseIf (Product1.VLActivationTypeEnabled = 3) Then LineOut "Настроенный тип активации: маркеры" Else LineOut "Настроенный тип активации: все" End If End If If bKmsClient Then gpMin = Product1.GracePeriodRemaining gpDay = GetDaysFromMins(gpMin) strKms = Product1.KeyManagementServiceMachine if strKms <> "" And Not IsNull(strKms) Then strPort = Product1.KeyManagementServicePort If (strPort = 0) Then strPort = DefaultPort End If Else strKms = objProduct1.DiscoveredKeyManagementServiceMachineName strPort = objProduct1.DiscoveredKeyManagementServiceMachinePort end if strIpAddress = Product1.DiscoveredKeyManagementServiceMachineIpAddress LineOut vbCrLf & "Сведения о последней активации:" LineOut "Сведения о клиенте службы управления ключами" LineOut " Идентификатор клиентского компьютера (CMID): " & GetServiceObject("ClientMachineID", Servise).ClientMachineID If IsNull(strIpAddress) Or (strIpAddress = "") Then LineOut " Автообнаружение DNS: имя KMS отсутствует" strIpAddress = "недоступен" Else LineOut " Зарегистрированное имя компьютера KMS: " & strKms & ":" & strPort End If LineOut " IP-адрес компьютера KMS: " & strIpAddress LineOut " Расширенный PID компьютера KMS: " & Product1.KeyManagementServiceProductKeyID LineOut " Интервал активации (в мин.): " & Product1.VLActivationInterval LineOut " Интервал обновления (в мин.): " & Product1.VLRenewalInterval If (Version > "6.1" or InStr(Product1.Name, C_PG_Windows) > 0) Then if (GetServiceObject("KeyManagementServiceHostCaching", Servise).KeyManagementServiceHostCaching) Then LineOut " Кэширование узла KMS включено" else LineOut " Кэширование узла KMS выключено" end if End If End If If bKmsHost Then LineOut vbCrLf & "На этом компьютере включена служба управления ключами" LineOut " Текущий счетчик: " & Product1.KeyManagementServiceCurrentCount If 0 = GetServiceObject("KeyManagementServiceListeningPort", Servise).KeyManagementServiceListeningPort Then LineOut " Прослушивание порта: " & DefaultPort Else LineOut " Прослушивание порта: " & GetServiceObject("KeyManagementServiceListeningPort", Servise).KeyManagementServiceListeningPort End If If (GetServiceObject("KeyManagementServiceDnsPublishing", Servise).KeyManagementServiceDnsPublishing) Then LineOut " Публикация DNS включена" Else LineOut " Публикация DNS выключена" End If If (GetServiceObject("KeyManagementServiceLowPriority", Servise).KeyManagementServiceLowPriority) Then LineOut " Приоритет KMS: Низкий" Else LineOut " Приоритет KMS: Обычный" End If LineOut vbCrLf & "Полученные от клиентов совокупные запросы службы управления ключами" LineOut " Всего получено запросов: " & Product1.RequiredClientCount LineOut " Получено невыполненных запросов: " & Product1.KeyManagementServiceTotalRequests LineOut " Запросов с состоянием лицензии ""Не лицензировано"" : " & Product1.KeyManagementServiceUnlicensedRequests LineOut " Запросов с состоянием лицензии ""Лицензировано"" : " & Product1.KeyManagementServiceLicensedRequests LineOut " Запросов с состоянием лицензии ""Начальный льготный период"" : " & Product1.KeyManagementServiceOOBGraceRequests LineOut " Запросов с состоянием лицензии ""Истек срок действия лицензии"" или ""Конфигурация оборудования компьютера не соответствует допустимой"" : " & Product1.KeyManagementServiceOOTGraceRequests LineOut " Запросов с состоянием лицензии ""Льготный период для неподлинной версии"" : " & Product1.KeyManagementServiceNonGenuineGraceRequests LineOut " Запросов с состоянием лицензии ""Режим уведомления"" : " & Product1.KeyManagementServiceNotificationRequests End If LineOut OutLine LineFlush() Next Next End Sub Private Sub LineFlush() WScript.Echo g_EchoString g_EchoString = "" End Sub ' Check if Product has KMS Host channel Private Function IsProductKMShost(strDescription) If IsProductKMS(strDescription) Then IsProductKMShost = False Else If InStr(strDescription, C_KMSserver) > 0 Then IsProductKMShost = True Else IsProductKMShost = False End If End If End Function ' Check if Product has KMS Client channel Private Function IsProductKMS(strDescription) If InStr(strDescription, C_KMSclient) > 0 Then IsProductKMS = True Else IsProductKMS = False End If End Function ' Out string line Private Sub OutLinen(OutStr) 'WScript.Echo OutStr End Sub Private Function ChecVersion() Clas = "SoftwareLicensingProduct" DisplayVersion(Clas) QuerySting C_Q_Global_Servise, Clas if Version <= "6.1" Then Clas = "OfficeSoftwareProtectionProduct" WScript.Sleep 500 OutLinen("Для проверки Office выбран Class: " & Clas) QuerySting C_Q_Office_Servise, Clas End If End Function ' A Copy of Err from the point of origin Class CErr Public Number Public Description Public Source Private Sub Class_Initialize Number = Err.Number Description = Err.Description Source = Err.Source End Sub End Class Function NewCErr(number, source, description) Dim objError Set objError = new CErr objError.Number = CLng(number) objError.Source = source objError.Description = description Set NewCErr = objError End Function ' Query End Display Windows Version Private Function DisplayVersion(Clas) s = len(Clas) p = Clas tString = (InStr(p, SoftwareLicensingProduct)) Or (InStr(p, OfficeSoftwareProtectionProduct)) parName = Mid(p, tString, s) if parName = Clas Then OutLinen(OutLine & VbCrLf & "Имя: " & Name & VbCrLf & "Версия Windows: " & strVersion & VbCrLf & "Выбран Class: " & parName & VbCrLf & OutLine) Else QuitIfError() End If End Function Private Function GetDaysFromMins(iMins) Dim iMinsInADay iMinsInADay = 24 * 60 GetDaysFromMins = Int((iMins + iMinsInADay - 1) / iMinsInADay) End Function Private Function IsTBL(strDescription) If InStr(strDescription, "TIMEBASED_") > 0 Then IsTBL = True Else IsTBL = False End If End Function Private Function IsAVMA(strDescription) If InStr(strDescription, "VIRTUAL_MACHINE_ACTIVATION") > 0 Then IsAVMA = True Else IsAVMA = False End If End Function Function GetServiceObject(strQuery, ServiceClass) Dim objService Dim colServices On Error Resume Next Set colServices = objWMIService.ExecQuery("SELECT " & strQuery & " FROM " & ServiceClass) QuitIfError() For each objService in colServices QuitIfError() Exit For Next QuitIfError() set GetServiceObject = objService End Function Function GetProductCollection(strSelect, strWhere, ProductClass) Dim colProducts Dim objProduct On Error Resume Next If strWhere = EmptyWhereClause Then Set colProducts = objWMIService.ExecQuery("SELECT " & strSelect & " FROM " & ProductClass) Else Set colProducts = objWMIService.ExecQuery("SELECT " & strSelect & " FROM " & ProductClass & " WHERE " & strWhere) End If For each objProduct in colProducts If Err.Number = 0 Then Exit For Else QuitIfError() End If Next Set GetProductCollection = colProducts End Function Private Sub QuitIfError() QuitIfError2 "L_MsgErrorText" End Sub Private Sub QuitIfError2(strMessage) Dim objErr If Err.Number <> HR_S_OK Then Set objErr = new CErr ShowError ReadResources(strMessage), objErr ExitScript objErr.Number End If End Sub Private Sub ShowError(ByVal strMessage, ByVal objErr) Dim strDescription Dim strNumber ' Convert error number to text. Use hexadecimal format for negative values such as HRESULT errors. If objErr.Number >= HR_S_OK Then strNumber = CStr(objErr.Number) Else strNumber = "0x" & Hex(objErr.Number) End If strDescription = ReadResources(Hex(objErr.Number)) If strDescription = "" Then If objErr.Description = "" Then strDescription = Replace(ReadResources("L_MsgErrorText_6"), "0x%ERRCODE%", strNumber) ElseIf objErr.Source = "" Then strDescription = objErr.Description Else strDescription = objErr.Description & " (" & objErr.Source & ")" End If End If If 0 = InStr(strMessage, "0x%ERRCODE%") Then strMessage = strMessage & "0x%ERRCODE%" End If If 0 = InStr(strMessage, "%ERRTEXT%") Then strMessage = strMessage & "%ERRTEXT%" End If strMessage = Replace(strMessage, "0x%ERRCODE%", strNumber) strMessage = Replace(strMessage, "%ERRTEXT%", strDescription) LineOut strMessage End Sub Function GetProductObject(strSelect, strWhere, ProductClass) Dim objProduct Dim colProducts Dim iProductsFound On Error Resume Next iProductsFound = 0 Set colProducts = GetProductCollection(strSelect, strWhere, ProductClass) For each objProduct in colProducts QuitIfError() iProductsFound = iProductsFound + 1 Next 'OutLinen(iProductsFound) 'There should be exactly one product returned by the query. If there are none 'assume the product key and/or licenses are missing. If there are more than one 'then fail with invalid arguments. If iProductsFound = 0 Then LineOut ReadResources("L_MsgErrorPKey") Err.Number = HR_SL_E_PKEY_NOT_INSTALLED ElseIf iProductsFound <> 1 Then LineOut ReadResources("L_MsgErrorPar") Err.Number = HR_INVALID_ARG End If QuitIfError() 'Return the first (and only) element in the collection For each objProduct in colProducts QuitIfError() Exit For Next set GetProductObject = objProduct End Function Private Sub LineOut(str) g_EchoString = g_EchoString & str & vbCrLf End Sub Private Sub ExitScript(retval) if (g_EchoString <> "") Then WScript.Echo g_EchoString End If WScript.Quit retval End Sub Private Function ReadResources(stream) Set Dict = CreateObject("Scripting.Dictionary") Dict.Add "C004B001", "Сервер активации определил, что лицензия недействительна" Dict.Add "C004B002", "Сервер активации определил, что лицензия недействительна" Dict.Add "C004B003", "Сервер активации определил, что лицензия недействительна" Dict.Add "C004B004", "Сервер активации определил, что лицензия недействительна" Dict.Add "C004B005", "Сервер активации определил, что лицензия недействительна" Dict.Add "C004B006", "Сервер активации определил, что лицензия недействительна" Dict.Add "C004B007", "Сервер активации сообщил, что компьютер не может подключиться к серверу активации" Dict.Add "C004B008", "Сервер активации определил, что компьютер не может быть активирован" Dict.Add "C004B009", "Сервер активации определил, что лицензия недействительна" Dict.Add "C004B011", "Сервер активации определил, что ваше время часы компьютера это не правильно. Вы должны исправить свои часы, прежде чем вы можете активировать" Dict.Add "C004B100", "Сервер активации определил, что компьютер не может быть активирован" Dict.Add "C004C001", "Сервер активации определил, указанный ключ продукта недопустим" Dict.Add "C004C002", "Сервер активации определил, есть проблема с указанный ключ продукта" Dict.Add "C004C003", "Сервер активации определил, что указанный ключ продукта был заблокирован" Dict.Add "C004C004", "Сервер активации определил, указанный ключ продукта недопустим" Dict.Add "C004C005", "Сервер активации определил, лицензия недействительна" Dict.Add "C004C006", "Сервер активации определил, лицензия недействительна" Dict.Add "C004C007", "Сервер активации определил, указанный ключ продукта недопустим" Dict.Add "C004C008", "Сервер активации определил, что указанный ключ продукта не может быть использованы" Dict.Add "C004C009", "Сервер активации определил, лицензия недействительна" Dict.Add "C004C00A", "Сервер активации определил, лицензия недействительна" Dict.Add "C004C00B", "Сервер активации определил, лицензия недействительна" Dict.Add "C004C00C", "Сервер активации произошла ошибка" Dict.Add "C004C00D", "Сервер активации определил, лицензия недействительна" Dict.Add "C004C00E", "Сервер активации определил, указанный ключ продукта недопустим" Dict.Add "C004C00F", "Сервер активации определил, указанный ключ продукта недопустим" Dict.Add "C004C010", "Сервер активации определил, указанный ключ продукта недопустим" Dict.Add "C004C011", "Сервер активации определил, лицензия недействительна" Dict.Add "C004C012", "Сервер активации испытали ошибка сети" Dict.Add "C004C013", "Сервер активации произошла ошибка" Dict.Add "C004C014", "Сервер активации произошла ошибка" Dict.Add "C004C020", "Сервер активации сообщил, что ключа многократной активации превышен предел" Dict.Add "C004C021", "Сервер активации сообщил, что превышен многократной активации предел ключ расширения" Dict.Add "C004C022", "Сервер активации сообщил, что предел Перевыпуск не был найден" Dict.Add "C004C023", "Сервер активации сообщил, что запрос коррекции не был найден" Dict.Add "C004C016", "Сервер активации сообщил, что указанный ключ продукта не может быть использован для активации продукта" Dict.Add "C004C017", "Сервер активации определил, что указанный ключ продукта был заблокирован для этого географического расположения" Dict.Add "C004C015", "Сервер активации произошла ошибка" Dict.Add "C004C050", "Сервер активации испытал общая ошибка" Dict.Add "C004C030", "Сервер активации сообщил, что время активации на основе попытки до даты начала." Dict.Add "C004C031", "Сервер активации сообщил, что время активации на основе попытки после даты окончания." Dict.Add "C004C032", "Сервер активации сообщил, что новое время на основе активации недоступен" Dict.Add "C004C033", "Сервер активации сообщил, что время ключ продукта на основе не подходит для активации." Dict.Add "C004C04F", "Сервер активации сообщил, что не бизнес-правила, доступные не активировать указанный ключ продукта" Dict.Add "C004C700", "Сервер активации сообщил, что бизнес-правило cound не нашли нужный вход" Dict.Add "C004C750", "Сервер активации сообщил, что NULL значение, указанное для имени бизнес-недвижимости и Ид" Dict.Add "C004C751", "Сервер активации сообщил, что имя свойство определяет неизвестное свойство" Dict.Add "C004C752", "Сервер активации сообщил, что свойство Id определяет неизвестное свойство" Dict.Add "C004C755", "Сервер активации сообщил, что не удалось обновить ключ продукта" Dict.Add "C004C756", "Сервер активации сообщил, что он не смог вставить ключ продукта" Dict.Add "C004C757", "Сервер активации сообщил, что он не может удалить ключ продукта" Dict.Add "C004C758", "Сервер активации сообщил, что не удалось обработать входной XML для продукта" Dict.Add "C004C75A", "Сервер активации сообщил, что он не смог вставить ключ продукта" Dict.Add "C004C75B", "Сервер активации сообщил, что не удалось обновить ключ продукта" Dict.Add "C004C75C", "Сервер активации сообщил, что он не может удалить ключ продукта" Dict.Add "C004C764", "Сервер активации сообщил, что тип ключа продукта неизвестно" Dict.Add "C004C770", "Сервер активации сообщил, что тип ключа продукта используется другим пользователем" Dict.Add "C004C780", "Сервер активации сообщил, что он не смог вставить ключ продукта" Dict.Add "C004C781", "Сервер активации сообщил, что не удалось обновить ключ продукта" Dict.Add "C004C401", "Виста Genuine Advantage Сервис определил, что установка не является подлинной" Dict.Add "C004C600", "Виста Genuine Advantage Сервис определил, что установка не является подлинной" Dict.Add "C004C801", "Сервер активации определил, указанный ключ продукта недопустим" Dict.Add "C004C802", "Сервер активации определил, указанный ключ продукта недопустим" Dict.Add "C004C803", "Сервер активации определил, что указанный ключ продукта был отозван" Dict.Add "C004C804", "Сервер активации определил, указанный ключ продукта недопустим" Dict.Add "C004C805", "Сервер активации определил, указанный ключ продукта недопустим" Dict.Add "C004C810", "Сервер активации определил, указанный ключ продукта недопустим" Dict.Add "C004C811", "Сервер активации определил, лицензия недействительна" Dict.Add "C004C812", "Сервер активации определил, что указанный ключ продукта превысил счетчик активаций" Dict.Add "C004C813", "Сервер активации определил, лицензия недействительна" Dict.Add "C004C814", "Сервер активации определил, указанный ключ продукта недопустим" Dict.Add "C004C815", "Сервер активации определил, лицензия недействительна" Dict.Add "C004C816", "Сервер активации сообщил, что указанный ключ продукта не может быть использован для активации продукта" Dict.Add "C004E001", "Служба лицензирования программного обеспечения определила, что указанный контекст неправилен." Dict.Add "C004E002", "Служба лицензирования программного обеспечения сообщила, что хранилище лицензий содержит противоречивые данные" Dict.Add "C004E003", "Служба лицензирования программного обеспечения сообщила, что произошла ошибка при проверке лицензии" Dict.Add "C004E004", "Служба лицензирования программного обеспечения сообщила, что эта лицензия не проверена" Dict.Add "C004E005", "Служба лицензирования программного обеспечения сообщила, что эта лицензия не активирована" Dict.Add "C004E006", "Служба лицензирования программного обеспечения сообщила, что лицензия содержит неверные данные" Dict.Add "C004E007", "Служба лицензирования программного обеспечения сообщила, что хранилище лицензий не содержит требуемой лицензии" Dict.Add "C004E008", "Служба лицензирования программного обеспечения сообщила, что свойство лицензия недействительна" Dict.Add "C004E009", "Служба лицензирования программного обеспечения сообщила, что хранилище лицензий не инициализируется" Dict.Add "C004E00A", "Служба лицензирования программного обеспечения сообщила, что хранилище лицензий уже инициализирован" Dict.Add "C004E00B", "Служба лицензирования программного обеспечения сообщила, что свойство лицензия недействительна" Dict.Add "C004E00C", "Служба лицензирования программного обеспечения сообщила, что лицензия не может быть создана или открыта" Dict.Add "C004E00D", "Служба лицензирования программного обеспечения сообщила, что лицензия не может быть написано" Dict.Add "C004E00E", "Служба лицензирования программного обеспечения сообщила, что хранилище лицензий не может прочитать файл лицензии" Dict.Add "C004E00F", "Служба лицензирования программного обеспечения сообщила, что свойство Лицензия повреждена" Dict.Add "C004E010", "Служба лицензирования программного обеспечения сообщила, что свойство лицензия отсутствует" Dict.Add "C004E011", "Служба лицензирования программного обеспечения сообщила, что хранилище лицензий содержит недопустимый файл лицензии" Dict.Add "C004E012", "Служба лицензирования программного обеспечения сообщила, что хранилище лицензий не удалось запустить синхронизацию должным образом" Dict.Add "C004E013", "Служба лицензирования программного обеспечения сообщила, что хранилище лицензий не смогли должным образом синхронизировать" Dict.Add "C004E014", "Служба лицензирования программного обеспечения сообщила, что свойство лицензия недействительна" Dict.Add "C004E015", "Служба лицензирования программного обеспечения сообщила, что потребление лицензия удалось" Dict.Add "C004E016", "Служба лицензирования программного обеспечения сообщила, что ключ продукта является недействительным" Dict.Add "C004E017", "Служба лицензирования программного обеспечения сообщила, что ключ продукта является недействительным" Dict.Add "C004E018", "Служба лицензирования программного обеспечения сообщила, что ключ продукта является недействительным" Dict.Add "C004E019", "Служба лицензирования программного обеспечения определила, что проверку указанного ключа продукта не удалось" Dict.Add "C004E01A", "Служба лицензирования программного обеспечения сообщила, что была признана недействительной Информация о дополнении" Dict.Add "C004E01B", "Служба лицензирования программного обеспечения сообщила, что не вся информация аппаратный могут быть собраны" Dict.Add "C004E01C", "Этот ознакомительный ключ продукта более не является допустимым" Dict.Add "C004E01D", "Новый ключ продукта не могут быть использованы на этой установке Windows. Введите другой ключ продукта. (CD-AB)" Dict.Add "C004E01E", "Новый ключ продукта не может быть использован на этой установке Windows. Введите другой ключ продукта. (AB-AB)" Dict.Add "C004E01F", "Новый ключ продукта не могут быть использованы на этой установке Windows. Введите другой ключ продукта. (AB-CD)" Dict.Add "C004E020", "Служба лицензирования программного обеспечения сообщила, что есть несоответствие между значением политики и информации, хранящейся в разделе OtherInfo" Dict.Add "C004E021", "Служба лицензирования программного обеспечения сообщила, что Подлинная информация, содержащаяся в лицензии, не соответствует" Dict.Add "C004E022", "Служба лицензирования программного обеспечения сообщила, что значение идентификатора Secure Store в лицензии не совпадает с текущим значением" Dict.Add "8004E101", "Служба лицензирования программного обеспечения сообщила, что версия файла маркеров магазин является недействительным" Dict.Add "8004E102", "Служба лицензирования программного обеспечения сообщила, что маркер магазин содержит недопустимый таблицу дескрипторов" Dict.Add "8004E103", "Служба лицензирования программного обеспечения сообщила, что маркер магазин содержит маркер с недействительными верхнего / нижнего колонтитула" Dict.Add "8004E104", "Служба лицензирования программного обеспечения сообщила, что маркер маркер магазин имеет недопустимое имя" Dict.Add "8004E105", "Служба лицензирования программного обеспечения сообщила, что маркер маркер магазин имеет недопустимое расширение" Dict.Add "8004E106", "Служба лицензирования программного обеспечения сообщила, что маркер магазин содержит дубликат маркер" Dict.Add "8004E107", "Служба лицензирования программного обеспечения сообщила, что маркер в сети Token Store, имеет размер несоответствие" Dict.Add "8004E108", "Служба лицензирования программного обеспечения сообщила, что маркер в сети Token Store, содержит недопустимый хэш" Dict.Add "8004E109", "Служба лицензирования программного обеспечения сообщила, что маркер магазин был не в состоянии читать маркер" Dict.Add "8004E10A", "Служба лицензирования программного обеспечения сообщила, что маркер магазин был не в состоянии написать маркер" Dict.Add "8004E10B", "Служба лицензирования программного обеспечения сообщила, что маркер магазин попытались недопустимую операцию файла" Dict.Add "8004E10C", "Служба лицензирования программного обеспечения сообщила, что нет активной транзакции" Dict.Add "8004E10D", "Служба лицензирования программного обеспечения сообщила, что заголовок файла магазин маркера является недействительным" Dict.Add "8004E10E", "Служба лицензирования программного обеспечения сообщила, что маркер магазин маркер дескриптор недействительным" Dict.Add "C004F001", "Служба лицензирования программного обеспечения сообщила о внутренней ошибке" Dict.Add "C004F002", "Служба лицензирования программного обеспечения сообщила, что потребление прав не удалось" Dict.Add "C004F003", "Служба лицензирования программного обеспечения сообщила, что требуемая лицензия не может быть найдена" Dict.Add "C004F004", "Служба лицензирования программного обеспечения сообщила, что ключ продукта не соответствует диапазону, определенному в лицензии" Dict.Add "C004F005", "Служба лицензирования программного обеспечения сообщила, что ключ продукта не совпадает с ключом продукта для лицензии" Dict.Add "C004F006", "Служба лицензирования программного обеспечения сообщила, что файл подписи для лицензию не доступен" Dict.Add "C004F007", "Служба лицензирования программного обеспечения сообщила, что лицензия не может быть найдена" Dict.Add "C004F008", "Служба лицензирования программного обеспечения сообщила, что лицензия не может быть найдена" Dict.Add "C004F009", "Служба лицензирования программного обеспечения сообщила, что льготный период истек" Dict.Add "C004F00A", "Служба лицензирования программного обеспечения сообщила, что идентификатор приложения не соответствует идентификатор приложения для лицензии" Dict.Add "C004F00B", "Служба лицензирования программного обеспечения сообщила, что идентификационные данные этого продукта отсутствуют" Dict.Add "4004F00C", "Служба лицензирования программного обеспечения сообщила, что приложение работает в пределах допустимого льготного периода" Dict.Add "4004F00D", "Служба лицензирования программного обеспечения сообщила, что приложение выполняется в рамках допустимого отклонения от льготного периода" Dict.Add "C004F00E", "Служба лицензирования программного обеспечения определила, что лицензия не может быть использован в текущей версии компонента процессора безопасности" Dict.Add "C004F00F", "Служба лицензирования программного обеспечения сообщает, что идентификатор привязки оборудования выходит за границы допустимого отклонения" Dict.Add "C004F010", "Служба лицензирования программного обеспечения сообщила, что ключ продукта является недействительным" Dict.Add "C004F011", "Служба лицензирования программного обеспечения сообщила, что файл лицензии не установлен" Dict.Add "C004F012", "Служба лицензирования программного обеспечения сообщила, что произошла ошибка вызова, так как не найдено значение введенного ключа" Dict.Add "C004F013", "Служба лицензирования программного обеспечения определила, что нет разрешения на запуск программного обеспечения" Dict.Add "C004F014", "Служба лицензирования программного обеспечения сообщила, что этот ключ продукта недоступен" Dict.Add "C004F015", "Служба лицензирования программного обеспечения сообщила, что лицензия не установлена" Dict.Add "C004F016", "Служба лицензирования программного обеспечения определила, что запрос не поддерживается" Dict.Add "C004F017", "Служба лицензирования программного обеспечения сообщила, что лицензия не установлена" Dict.Add "C004F018", "Служба лицензирования программного обеспечения сообщила, что лицензия не содержит действительные данные о местоположении для сервера активации" Dict.Add "C004F019", "Служба лицензирования программного обеспечения определила, что просил событие ID является недействительным" Dict.Add "C004F01A", "Служба лицензирования программного обеспечения определила, что запрошенное событие не зарегистрировано для этой службы" Dict.Add "C004F01B", "Служба лицензирования программного обеспечения сообщила, что идентификатор события уже зарегистрированы" Dict.Add "C004F01C", "Служба лицензирования программного обеспечения сообщила, что лицензия не установлена" Dict.Add "C004F01D", "Служба лицензирования программного обеспечения сообщила, что проверка лицензии не удалось" Dict.Add "C004F01E", "Служба лицензирования программного обеспечения определила, что тип входных данных не соответствует типу данных в лицензии" Dict.Add "C004F01F", "Служба лицензирования программного обеспечения определила, что лицензия недействительна" Dict.Add "C004F020", "Служба лицензирования программного обеспечения определила, что пакет лицензия недействительна" Dict.Add "C004F021", "Служба лицензирования программного обеспечения сообщила, что срок действия лицензии истек" Dict.Add "C004F022", "Служба лицензирования программного обеспечения сообщила, что разрешение лицензия удалось" Dict.Add "C004F023", "Служба лицензирования программного обеспечения сообщила, что лицензия недействительна" Dict.Add "C004F024", "Служба лицензирования программного обеспечения сообщила, что лицензия недействительна" Dict.Add "C004F025", "Служба лицензирования программного обеспечения сообщила, что действие требует привилегий администратора" Dict.Add "C004F026", "Служба лицензирования программного обеспечения сообщила, что необходимые данные не найдены" Dict.Add "C004F027", "Служба лицензирования программного обеспечения сообщила, что лицензия подделаны" Dict.Add "C004F028", "Служба лицензирования программного обеспечения сообщила, что кэш политика является недействительным" Dict.Add "C004F029", "Служба лицензирования программного обеспечения не может быть запущен в текущем режиме OS" Dict.Add "C004F02A", "Служба лицензирования программного обеспечения сообщила, что лицензия недействительна" Dict.Add "C004F02C", "Служба лицензирования программного обеспечения сообщила, что формат данных автономной активации неправильный" Dict.Add "C004F02D", "Служба лицензирования программного обеспечения определила, что версия идентификатора подтверждения автономной активации неправильна" Dict.Add "C004F02E", "Служба лицензирования программного обеспечения определила, что версия форума идентификатора подтверждения (CID) не поддерживается" Dict.Add "C004F02F", "Служба лицензирования программного обеспечения определила, что длина идентификатора подтверждения автономной активации неправильна" Dict.Add "C004F030", "Служба лицензирования программного обеспечения определила, что этот идентификатор установки (IID) идентификатора подтверждения (CID) автономной активации не может быть сохранен" Dict.Add "C004F031", "Идентификатор установки (IID) не соответствует идентификатору подтверждения (СЮ). Необходимо подтвердить идентификатор установки и, возможно, получить новый идентификатор подтверждения" Dict.Add "C004F03 Последний раз редактировалось: loban_ser (2022-04-11 21:15), всего редактировалось 1 раз |
Отправлено: 12-Мар-2019 08:58
(спустя 2 дня 20 часов)
Когда-то, давненько уже, делал батничек для добавления директорий в патч через реестр.
добавить директорию в Path.@set @x=0; /* @Echo off VER |>NUL find "6." && if "%~1"=="" cscript.exe //nologo //e:jscript "%~fs0"& exit /b SetLocal EnableExtensions Color 17 CD /D "%~dp0" set RegKey=HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment for /f "tokens=2 delims==" %%i in ('"WMIC Path Win32_OperatingSystem get SystemDirectory /format:list"') do set SysDir=%%i for /f "tokens=2*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName ^| find "ProductName"') do set vers=%%b Set WinRAR=%ProgramFiles%\WinRAR&Set Zip=%ProgramFiles%\7-Zip& If "%PROCESSOR_ARCHITECTURE%"=="x86" If Not Defined PROCESSOR_ARCHITEW6432 Set WinRAR=%ProgramFiles(x86)%\WinRAR&Set Zip=%ProgramFiles(x86)%\7-Zip set log=DirPathLog.txt call :findpath ver>>%log% echo.%vers%>>%log% echo Date: %date% / Time: %time:~0,8%>>%log% echo *********************************>>%log% echo DirPath:>>%log% echo %CurPath%>>%log% echo.>>%log% :: Здесь добавляем или убираем, что хотим добавить в переменную Path. chcp 1251 >nul 2>&1 ::echo [Мой установленный патч, после настройки ОС]>>%temp%\temp.ini chcp 866 >nul 2>&1 ::echo MyDefault=%%SystemRoot%%\system32;%%SystemRoot%%;%%SystemRoot%%\System32\Wbem;%%SYSTEMROOT%%\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\;%%systemroot%%\idmu\common>>%temp%\temp.ini chcp 1251 >nul 2>&1 ::echo [Патч по-умолчанию в ОС]>>%temp%\temp.ini chcp 866 >nul 2>&1 ::echo Default=%%SystemRoot%%\system32;%%SystemRoot%%;%%SystemRoot%%\System32\Wbem;%%SYSTEMROOT%%\System32\WindowsPowerShell\v1.0\;%%systemroot%%\idmu\common>>%temp%\temp.ini chcp 1251 >nul 2>&1 ::echo [Здесь мои добавленные программы и утилиты]>>%temp%\temp.ini chcp 866 >nul 2>&1 ::echo Zip=%Zip%>>%temp%\temp.ini ::echo Utilities=%SystemDrive%\Utilities>>%temp%\temp.ini ::echo WinRAR=%WinRAR%>>%temp%\temp.ini ::echo Dism=C:\Windows\System32\Dism>>%temp%\temp.ini if exist "%temp%\temp.ini" ( for /f "eol=[ tokens=* usebackq" %%i in (%temp%\temp.ini) do ( set "%%i" call :addpath %%i )) else ( echo. echo Не найден файл с настройками... Pause >NUL goto :EOF ) call :findpath echo CustPath:>>%log% echo %CurPath%>>%log% echo.>>%log% Pause >NUL 2>nul del %temp%\temp.ini EndLocal Exit /B :: Для работы скрипта, убираем знак "::" перед '%SysDir%\reg.exe add' :addpath if /i "%~1" == "" Exit /b set var=%~1 For /f "tokens=2*" %%a In ('"reg.exe query "%RegKey%" /v Path |Find.exe "Path""') do set CurPath=%%~b SetLocal EnableDelayedExpansion set path=%CurPath%;!%~1! if /i "%var%" equ "MyDefault" set path=!%~1! if /i "%var%" equ "Default" set path=!%~1! ::reg.exe add "%RegKey%" /v "Path" /t REG_EXPAND_SZ /d "!path!" /f echo !%~1! EndLocal exit /b :findpath For /f "tokens=2*" %%a In ('"reg query "%RegKey%" /v Path |Find "Path""') do set CurPath=%%~b exit /b */new ActiveXObject('Shell.Application').ShellExecute (WScript.ScriptFullName,'Admin','','runas',1); SetX Path "%PATH%;%SystemDrive%\Utilities" -m Изменение MAC адреса@ECHO OFF SET /A RLINE=1 SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION Color 17 title Изменение MAC-адреса reg.exe query "HKU\S-1-5-19" >nul 2>&1 if %errorlevel% equ 1 (goto :UACPrompt) else (goto :Network) :UACPrompt echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" echo UAC.ShellExecute "%~fs0", "", "", "runas", 1 >> "%temp%\getadmin.vbs" "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs" exit /b :Network FOR /F "tokens=3*" %%I IN ('REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards" /S ^|FINDSTR /I /L "REG_SZ"') DO ( SET /A RLINE+=1 &SET /A PARITY=!RLINE!^%%2 IF !PARITY! EQU 0 (SET "ADAPTERGUID=%%I") ELSE ( SET "ADAPTERNAME=%%I %%J" FOR /F %%A IN ('REG QUERY "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}" /F "!ADAPTERGUID!" /D /E /S ^|FINDSTR /I /L /V "Linkage"^|FINDSTR /I /L "\\Class\\"') DO SET "REGPATH=%%A" CLS echo Сценарий Изменение MAC-адреса echo. echo RegPath = !REGPATH! echo GUID = !ADAPTERGUID! echo Adapter name = !ADAPTERNAME! REG QUERY "!REGPATH!" /V "NetworkAddress" 2>&1 |FINDSTR /I /L "NetworkAddress" SET "CHANGEMAC=" SET "RESETMAC=" echo. echo Введите MAC-адрес для данного адаптера echo [0 - чтобы сбросить его] или нажмите [Enter - чтобы пропустить]: SET /P "CHANGEMAC=" IF "!CHANGEMAC!"=="0" (SET "RESETMAC=Y" &SET "CHANGEMAC=") ELSE SET "RESETMAC=" IF DEFINED CHANGEMAC SET "CHANGEMAC=!CHANGEMAC: =!" &FOR %%I IN (: ^< ^> { } [ ] - ^( ^) .) DO SET "CHANGEMAC=!CHANGEMAC:%%I=!" IF DEFINED CHANGEMAC REG ADD "!REGPATH!" /F /V NetworkAddress /T REG_SZ /D !CHANGEMAC! >nul 2>&1 IF DEFINED RESETMAC REG DELETE "!REGPATH!" /F /V NetworkAddress >nul 2>&1 )) IF DEFINED CHANGEMAC FOR /F "tokens=2,4*" %%I IN ('netsh interface show interface^|FINDSTR /I /L "Enabled"') DO ( netsh interface set interface %%J DISABLED netsh interface set interface %%J ENABLED ) Pause >NUL EndLocal Exit /B |
Отправлено: 12-Мар-2019 09:28
(спустя 29 минут)
Отправлено: 12-Мар-2019 10:05
(спустя 37 минут)
63326SetX Я вообще не шибко люблю сторонние проги, привычка все делать средствами Windows (если есть такая возможность), а она есть! примитивно конечно, но когда-то юзал@echo off title DISKPART color 17 SetLocal EnableDelayedExpansion :Diskpart mode con cols=87 lines=12 cls echo ====================================================================================== echo: echo DISKPART echo: echo Создание загрузочного носителя. echo: echo ====================================================================================== echo: echo ПРИМЕЧАНИЕ: Будьте уверены указывая исправный диск. echo: echo: CHOICE /C ABC /N /M "[A] - Продолжить [B] - Копирование файлов или [C] - Выход?:" if %errorlevel%==1 goto :PD if %errorlevel%==2 goto :PD3 if %errorlevel%==3 goto :Exit :PD mode con cols=87 lines=50 set type=NTFS set label=New Volume echo list disk > %temp%\list.txt diskpart < %temp%\list.txt pause if exist "%temp%\list.txt" del /s /q "%temp%\list.txt" >nul echo: set /p dl=Укажите номер диска :^> echo: echo По умолчанию: %type% echo: echo Для BIOS_MBR - NTFS == N == echo: echo Для UEFI_GPT - FAT32 == F == echo: CHOICE /C NF /N /M ^>"Выберите формат:" if %errorlevel%==1 set type=NTFS && goto :Next if %errorlevel%==2 set type=FAT32 && goto :Next :Next echo: echo По умолчанию: %label% echo: set /p label=Укажите метку диска :^> echo: echo Выбранный диск будет отформатирован сейчас ...!!! echo: CHOICE /C AB /N /M "[A] - Продолжить или [B] - Выйти?:" if %errorlevel%==1 goto :PD2 if %errorlevel%==2 goto :Exit :PD2 echo select disk %dl% > %temp%\diskpart.txt echo clean >> %temp%\diskpart.txt echo create partition primary >> %temp%\diskpart.txt echo select partition 1 >> %temp%\diskpart.txt echo active >> %temp%\diskpart.txt echo format fs=%type% label="%label%" quick >> %temp%\diskpart.txt echo assign >> %temp%\diskpart.txt cls echo ====================================================================================== echo: echo DISKPART echo: echo Выполнение задания... echo: echo ====================================================================================== echo: diskpart < %temp%\diskpart.txt echo: pause if exist "%temp%\diskpart.txt" del /s /q "%temp%\diskpart.txt" >nul echo: echo Теперь вы можете скопировать файлы на загрузочный диск.. echo: CHOICE /C AB /N /M "[A] - Копировать или [B] - Выйти?:" if %errorlevel%==1 goto :PD3 if %errorlevel%==2 goto :Exit :PD3 mode con cols=87 lines=25 title FILECOPY cls echo ====================================================================================== echo: echo FILECOPY echo: echo Скопируйте файлы на загрузочный диск echo: echo ====================================================================================== echo: echo Введите путь, Пример: E: echo: set /p source=Укажите путь к файлам которые скопировать :^> echo: echo Введите путь, Пример: D: echo: set /p target=Укажите путь куда скопировать :^> echo: for /f "tokens=2 delims==" %%i in ('"WMIC Path Win32_LogicalDisk Where Name='%target%' get FileSystem /format:list"') do set type=%%i if /i "%type%" == "FAT32" (for /f "delims=" %%I in ("!source!") do set "tip=%%~xI" && timeout /t 1 >nul 2>&1 echo: if /i "!tip!" == ".iso" (%~dp07z.exe e -y "%source%" -o%temp% bootmgr.efi >nul 2>&1 echo: if exist %temp%\bootmgr.efi (%~dp07z.exe x -y -tUDF "%source%" -o%target% >nul 2>&1&del %temp%\bootmgr.efi&goto :prod) else (goto :notsupp) ) else (goto :noiso) :noiso if exist "%source%\bootmgr.efi" (goto :gonext) else (goto :notsupp) :gonext xcopy "%source%\*.*" /s "%target%" /Y /Q&goto :prod :prod if exist %target%\efi\boot (goto :selact) else (md "%target%\efi\boot" >nul 2>&1) %~dp07z.exe e "%target%\sources\install.wim" -o"%target%\efi\boot" bootmgfw.efi -r -y >nul 2>&1 ren "%target%\efi\boot\bootmgfw.efi" "bootx64.efi" %target%\boot\bootsect.exe /nt60 %target% >nul 2>&1 goto :selact ) else ( for /f "delims=" %%I in ("!source!") do set "tip=%%~xI" && timeout /t 1 >nul 2>&1 if /i "!tip!" == ".iso" (%~dp07z.exe x -y -tUDF "%source%" -o%temp% boot>nul 2>&1 %temp%\boot\bootsect.exe /nt60 %target% >nul 2>&1 %~dp07z.exe x -y -tUDF "%source%" -o%target% >nul 2>&1 rd /s /q "%temp%\boot" >nul 2>&1 goto :selact) else ( cd /d "!source!\boot" bootsect.exe /nt60 %target% >nul 2>&1 if %errorlevel% equ 0 cd "%WinDir%\system32" xcopy "%source%\*.*" /s "%target%" /Y /Q goto :selact ) ) :notsupp cls mode con cols=87 lines=10 color 0C echo: echo ====================================================================================== echo: echo === Данный установочный диск не поддерживает установку в UEFI ... === echo: echo ====================================================================================== echo: timeout /t 7 >nul 2>&1 goto :selact :selact cls mode con cols=87 lines=10 color 17 CHOICE /C AE /N /M "[A] - Повторить копирование или [E] - Выйти?:" if %errorlevel%==1 goto :PD3 if %errorlevel%==2 goto :Exit :Exit endlocal exit Узнать букву флешкиFor /F "tokens=1* delims==" %%a in ('2^>NUL WMIC Path Win32_LogicalDisk Where ^(DriveType^=2 And MediaType^=NULL And VolumeSerialNumber Is Not Null^) Get Name /Value ^|find /I "Name"') do set "usb=%%b" if defined usb echo -%usb%- Последний раз редактировалось: loban_ser (2019-03-12 15:21), всего редактировалось 3 раз(а) |
Отправлено: 12-Мар-2019 14:43
(спустя 4 часа)
SetX нужно ложить рядом с батником (и видимо разные версии, не исследовал, может и одну можно, но для универсальности с PE без WOW64 SetX и SetX64 хотя бы) иначе могут быть нежданчики, не везде он есть
но что-то не припомню зачем он в батниках, ведь можно локально задать для какого то случая set path=%path%;x:\proga\progasuper\ для переменных юзера вроде перегрузка не нужна Узнать букву флешки |
Отправлено: 12-Мар-2019 14:51
(спустя 8 минут)
Отправлено: 12-Мар-2019 15:00
(спустя 8 минут)
- дык опять же не везде есть WMIC Если через SetX добавлять переменные, то будет работать уже в другом окне ком строки. ЗЫ: красиво писать не умею, но думаю вы меня поняли. |
Отправлено: 12-Мар-2019 15:05
(спустя 4 минуты)
Страница 4 из 8
Текущее время: 21-Ноя 18:25
Часовой пояс: UTC + 3
Вы не можете начинать темы
Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы |