[Цитировать]

    sergeysvirid
  • 104
  • Стаж: 9 лет 3 месяца
  • Сообщений: 2495
  • Репутация:127

    [+] [-]
  • Откуда: 65 регион (GMT+11)
Vavag,
Приветствую! aa
Да и вообще тема называется: "Полезные CMD файлы"
Тема для готовых решений, а не для обсуждения написания правильности скриптов.
rbskin, Вот эту тему: Батники - вопросы и решения специально же создали, чтобы обсуждать там подобные вопросы и не захламлять данный топик (что потом невозможно найти среди хлама нужную инфу/скрипт)

[Цитировать]

    noyname_oem
  • 18418
  • Стаж: 5 лет 10 месяцев
  • Сообщений: 6
  • Репутация:2

    [+] [-]
Задался вопросом защиты загрузочной флешки от записи. (защита от дурака). Придумал такое вот решение. Было полезно когда полетел хард и была одна только загрузочная флешка. Кроме меня были пользователи, которые могли нечаянно что то удалить ac Скрипт помещался в автозагрузочный файл на флешке.

Защита флешки от записи

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

[Цитировать]

    Adler
  • 1708
  • Стаж: 8 лет 5 месяцев
  • Сообщений: 1196
  • Репутация:65

    [+] [-]
  • Откуда: Луганск
53685Скрипт помещался в автозагрузочный файл на флешке.
Не универсально, т.к. автозапуск часто бывает выключен, как вручную, так и большинство антивирусов его блокируют.
Могу ошибаться, но на Win 10 он по дефолту вроде выключен.

[Цитировать]

    vovan1982
  • 214
  • Стаж: 9 лет 2 месяца
  • Сообщений: 1098
  • Репутация:76

    [+] [-]
  • Откуда: Ростов-на-Дону
53685Задался вопросом защиты загрузочной флешки от записи. (защита от дурака). Придумал такое вот решение.
Есть же http://usbtor.ru/viewtopic.php?t=315

[Цитировать]

    Adler
  • 1708
  • Стаж: 8 лет 5 месяцев
  • Сообщений: 1196
  • Репутация:65

    [+] [-]
  • Откуда: Луганск
vovan1982, ну это не защищает от:
53685были пользователи, которые могли нечаянно что то удалить

[Цитировать]

    noyname_oem
  • 18418
  • Стаж: 5 лет 10 месяцев
  • Сообщений: 6
  • Репутация:2

    [+] [-]
vovan1982,
Утилиты это хорошо. Захотелось средствами самой системы.
Adler,
Остался без винта. Использовал WinPE скачанную у соседа с ruтрекера на скорую руку. Этой сборкой оказалась Sergei Strelec Win 10, совершенно случайно, могла быть и другая какая нибудь ag Поковырялся в ней, добавил в автозапуск. Ну разве что в самой сборке вирусы ;) Использовал как временное решение, не от вирусов а от человеческого фактора. Вопрос про защиту от вируса совсем не стоял.

[Цитировать]

    Joker-2013
  • 1039
  • Стаж: 8 лет 9 месяцев
  • Сообщений: 2053
  • Репутация:120

    [+] [-]
  • Откуда: из прошлого
53715Ну разве что в самой сборке вирусы ;)
нет там никаких вирусов..
Но от многих детектов, автор, при желании, мог бы избавиться...

[Цитировать]

    loban_ser
  • 17796
  • Стаж: 6 лет 1 месяц
  • Сообщений: 578
  • Репутация:24

    [+] [-]
aa
Хочу поделиться пару скриптами (бат) может пригодится кому ab

Функция, которая проверяет, пуста ли папка

@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
А также код на vbs отображение информации о Windows & Office

длинная портянка

[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 раз

[Цитировать]

    loban_ser
  • 17796
  • Стаж: 6 лет 1 месяц
  • Сообщений: 578
  • Репутация:24

    [+] [-]
Когда-то, давненько уже, делал батничек для добавления директорий в патч через реестр.

добавить директорию в 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);
Все оказывается сейчас намного проще ag
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

[Цитировать]

    dimo70
  • 17296
  • Стаж: 6 лет 3 месяца
  • Сообщений: 3990
  • Репутация:26

    [+] [-]
  • Откуда: BG
Все оказывается сейчас намного проще
loban_ser,
Впечатлила разница в батниках.
А почему так получается? Ведь разница в размера огромная. От чего ето зависит?

_________________
Подпись отключена за нарушение правил форума

[Цитировать]

    loban_ser
  • 17796
  • Стаж: 6 лет 1 месяц
  • Сообщений: 578
  • Репутация:24

    [+] [-]
63326SetX
Так раньше (в прежних версия Windows) SetX входила в состав Windows Resourse Kit.
Я вообще не шибко люблю сторонние проги, привычка все делать средствами 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 раз(а)

[Цитировать]

    dialmak
  • 2607
  • Стаж: 8 лет 1 месяц
  • Сообщений: 842
  • Репутация:40

    [+] [-]
SetX нужно ложить рядом с батником (и видимо разные версии, не исследовал, может и одну можно, но для универсальности с PE без WOW64 SetX и SetX64 хотя бы) иначе могут быть нежданчики, не везде он есть
но что-то не припомню зачем он в батниках, ведь можно локально задать для какого то случая
set path=%path%;x:\proga\progasuper\
а глобально SetX требует перегрузки вроде
для переменных юзера вроде перегрузка не нужна
Узнать букву флешки
- дык опять же не везде есть WMIC

[Цитировать]

    loban_ser
  • 17796
  • Стаж: 6 лет 1 месяц
  • Сообщений: 578
  • Репутация:24

    [+] [-]
dialmak,
допустим я добавляю свою папку с утилями ком строки в патч, так вот, чтобы мне каждый раз в неё не заходить я вношу её в патч.
Хотя у меня это прописано в файле ответов, все автоматом выполняется при установке венды, папка копируется на сис диск и вносится в системный патч

[Цитировать]

    loban_ser
  • 17796
  • Стаж: 6 лет 1 месяц
  • Сообщений: 578
  • Репутация:24

    [+] [-]
- дык опять же не везде есть WMIC
да, в РЕ не во всех, но речь какбы не о РЕ, хотя при желании можно и туда внедрить ab
Если через SetX добавлять переменные, то будет работать уже в другом окне ком строки.
ЗЫ: красиво писать не умею, но думаю вы меня поняли.

[Цитировать]

    dialmak
  • 2607
  • Стаж: 8 лет 1 месяц
  • Сообщений: 842
  • Репутация:40

    [+] [-]
loban_ser, для себя любимого можно как угодно

Страница 4 из 8


Показать сообщения:    

Текущее время: 29-Мар 02:42

Часовой пояс: UTC + 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы можете скачивать файлы