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

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

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

Аватара для zai

Ветеран


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


Конфигурация

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


Нужно внести данные в реестр с проверкой (по умолчанию 0):
Код: Выделить весь код
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OfficeSoftwareProtectionPlatform]
"UserOperations"=dword:00000001
Сделал такой батник:
@echo off
reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OfficeSoftwareProtectionPlatform /f UserOperations /t REG_DWORD | find /i "0x1" && (goto exit) || (goto update_reg)
:update_reg
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OfficeSoftwareProtectionPlatform /v UserOperations /t REG_DWORD /d 1 /f
goto exit
:exit

Он правильно написан?

-------
А зачем тебе жужжать, если ты не пчела? По-моему так.


Отправлено: 19:10, 21-06-2017

 

Ветеран


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

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


zai, достаточно просто:
Код: Выделить весь код
reg.exe add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OfficeSoftwareProtectionPlatform /v UserOperations /t REG_DWORD /d 1 /f
— нет особого смысла проверять, если результатом в любом случае должна быть 1.
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:20, 21-06-2017 | #2



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

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

zai zai вне форума Автор темы

Аватара для zai

Ветеран


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

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


Цитата Iska:
нет особого смысла проверять, если результатом в любом случае должна быть 1 »
тогда батник будет постоянно перезаписывать данные реестра, а нужно что бы он не срабатывал.

Iska, а такой вариант не лучше будет?

Код: Выделить весь код
@echo off
setlocal
set ProductName=Office14.STANDARD
IF NOT "%ProgramFiles(x86)%"=="" (goto amd64) else (goto x86)
:amd64
reg query HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432NODE\Microsoft\Windows\CurrentVersion\Uninstall\%ProductName%
if NOT %errorlevel%==1 (goto exit)
:x86
reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\%ProductName%
if %errorlevel%==1 (goto check_reg) else (goto exit)
:check_reg
reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OfficeSoftwareProtectionPlatform /f UserOperations /t REG_DWORD | find /i "0x1" && (goto exit) || (goto update_reg)
:update_reg
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OfficeSoftwareProtectionPlatform /v UserOperations /t REG_DWORD /d 1 /f
goto exit
:exit
endlocal

-------
А зачем тебе жужжать, если ты не пчела? По-моему так.


Последний раз редактировалось zai, 21-06-2017 в 20:02.


Отправлено: 19:32, 21-06-2017 | #3


Ветеран


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

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


Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

for /f "usebackq tokens=1,3" %%i in (
	`2^>nul reg.exe query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OfficeSoftwareProtectionPlatform" /v "UserOperations" /t REG_DWORD ^| find.exe /i "UserOperations"`
) do set /a i%%i = %%j

if defined iUserOperations (
	if "%iUserOperations%" neq "1" call :AddParameterOrSetValue
) else (
	call :AddParameterOrSetValue
)

endlocal
exit /b 0

:AddParameterOrSetValue
	2>nul 1>&2 reg.exe add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OfficeSoftwareProtectionPlatform" /v "UserOperations" /t REG_DWORD /d 0x01 /f
	exit /b
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:02, 21-06-2017 | #4

zai zai вне форума Автор темы

Аватара для zai

Ветеран


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

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


Остановился на первом варианте:
Цитата zai:
@echo off
reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OfficeSoftwareProtectionPlatform /f UserOperations /t REG_DWORD | find /i "0x1" && (goto exit) || (goto update_reg)
:update_reg
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OfficeSoftwareProtectionPlatform /v UserOperations /t REG_DWORD /d 1 /f
goto exit
:exit »
т.к. он проще

-------
А зачем тебе жужжать, если ты не пчела? По-моему так.


Отправлено: 22:28, 21-06-2017 | #5


Ветеран


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

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


Цитата zai:
т.к. он проще »
Если Вы уверены, что там никогда не будет значений вида 0x10, 0x11, 0x12, 0x111 и т.п.

Только замените, наконец /f на /v в:
Цитата zai:
reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OfficeSoftwareProtectionPlatform /f UserOperations /t REG_DWORD | find /i "0x1" && (goto exit) || (goto update_reg) »
и можно проще:
Код: Выделить весь код
2>nul reg.exe query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OfficeSoftwareProtectionPlatform" /v "UserOperations" /t REG_DWORD | find.exe /i "0x1" || 2>nul 1>&2 reg.exe add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OfficeSoftwareProtectionPlatform" /v "UserOperations" /t REG_DWORD /d 0x01 /f
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:25, 21-06-2017 | #6



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Изменение параметра реестра. SANIOK_AV Скриптовые языки администрирования Windows 4 17-09-2014 12:36
CMD/BAT - Экспорт параметра реестра в другую ветку Valek271183 Скриптовые языки администрирования Windows 0 05-07-2013 17:45
VBS/WSH/JS - Изменение параметра реестра VBSом Nikitosehr Скриптовые языки администрирования Windows 8 16-05-2012 18:24
CMD/BAT - [решено] Получение значения параметра реестра IfoR Скриптовые языки администрирования Windows 6 08-04-2010 12:54
CMD/BAT - [решено] Получение значения параметра реестра user_123 Скриптовые языки администрирования Windows 3 05-04-2010 13:10




 
Переход