PDA

Показать полную графическую версию : [решено] Reg ADD не записывает новое значнеие


ivisor
05-01-2016, 15:34
Хочу написать батник, который будет сбрасывать счетчик Аутлук Экспресса и не давать ему сжимать содержимое.

Для этого нужно при запуске системы обнулять:
[HKCU\Identities\%DefaultUserID%\Software\Microsoft\Outlook Express\5.0]
"Compact Check Count"=dword:00000000

%DefaultUserID% пользователя я получаю успешно, а вот ни прочитать значение параметра "Compact Check Count" ни записать его не могу.

Чтение из командной строки:
Reg QUERY "HKCU\Identities\{6AFFFC1F-16A3-4D85-AAC3-B5113277F9F4}\Software\Microsoft\Outlook Express\5.0" /V "Compact Check Count"
Выдает ошибку "недопустимые параметры командной строки"
Reg QUERY "HKCU\Identities\{6AFFFC1F-16A3-4D85-AAC3-B5113277F9F4}\Software\Microsoft\Outlook Express\5.0" /V Compact Check Count
Выдает ВСЕ параметры и вложенные ключи
С Reg QUERY видимо проблема в том что в пути ключа есть пробел: "... Outlook Express ...", т.к. параметры ключей без пробела читаются успешно

Запись из командной строки:
Reg ADD "HKCU\Identities\{6AFFFC1F-16A3-4D85-AAC3-B5113277F9F4}\Software\Microsoft\Outlook Express\5.0" /V "Compact Check Count" /T REG_DWORD /D 0 /F
Выдает ошибку "Слишком много параметров в командной строке"
Reg ADD "HKCU\Identities\{6AFFFC1F-16A3-4D85-AAC3-B5113277F9F4}\Software\Microsoft\Outlook Express\5.0" /V Compact Check Count /T REG_DWORD /D 0 /F
Выдает "Операция успешно завершена", но данные параметра Compact Check Count остаются неизменными



Подскажите пожалуйста что делать и в какую сторону?



Вот текст батника (на всякий случай):
@echo off
rem ----------------------------------------------------------------------------------------------------------
rem Сброс счетчика Outlook Express
rem
rem HKCU\Identities\[UserID]\Software\Microsoft\Outlook Express\5.0\
rem Compact Check Count =0
rem ----------------------------------------------------------------------------------------------------------

rem ----------------------------------------------------------------------------------------------------------
rem получим sid по имени текущего пользователя
rem ----------------------------------------------------------------------------------------------------------
set "exec=wmic useraccount where name="%username%" get sid /value"
echo %exec%
for /f %%i in (' "%exec%" ') do 1>nul set "%%i"
echo ----------------------------------------------------------------------------------------------------------
echo sid=%sid%
echo ----------------------------------------------------------------------------------------------------------


rem ----------------------------------------------------------------------------------------------------------
rem получим Default User ID по sid пользователя
rem ----------------------------------------------------------------------------------------------------------
echo Reg QUERY HKEY_USERS\%sid%\Identities\ /v "Default User ID"
Reg QUERY HKEY_USERS\%sid%\Identities\ /v "Default User ID"
rem ----------------------------------------------------------------------------------------------------------
set "exec=Reg QUERY HKEY_USERS\%sid%\Identities\ /v "Default User ID""
For /F "Tokens=5" %%i In (' "%exec%" ') Do set DefaultUserID=%%i
echo ----------------------------------------------------------------------------------------------------------
Echo Default User ID = %DefaultUserID%
echo ----------------------------------------------------------------------------------------------------------


rem ----------------------------------------------------------------------------------------------------------
rem обнулим значение параметра Compact Check Count
rem ----------------------------------------------------------------------------------------------------------
set Key="HKEY_CURRENT_USER\Identities\%DefaultUserID%\Software\Microsoft\Outlook Express\5.0\"
set ParName=Compact Check Count
Echo Reg ADD %Key% /v %ParName% /t REG_DWORD /d 0 /f
Reg ADD %Key% /v %ParName% /t REG_DWORD /d 0/f

Iska
05-01-2016, 15:49
и не завать ему сжимать содержимое. »
Зачем? Чтоб он пораньше «рухнул» из-за превышения лимита на объём файла папки .dbx?

greg zakharov
05-01-2016, 16:22
Подскажите пожалуйста что делать и в какую сторону?Подсказываю: перезапись значения сама по себе обнуляет значение. Иными словами:@echo off
setlocal
set key="HKCU\Identities\{D8815D8C-B5CA-4EB3-BA97-E62C06CFAC56}"
set key="%key:"=%\Software\Microsoft\Outlook Express\5.0"
set val="Compact Check Count"
reg add %key% /v %val% /t REG_DWORD
endlocal
exit /bобнулит Compact Check Count. А вообще г-н Iska прав, так что подумайте хорошенько прежде.

ivisor
05-01-2016, 17:03
Iska - я вкурсе про 2К, но если человек не хочет бат, а хочет чтобы ОЕ да еще не сжимало и т.д., то пусть сам следит за своими граблями.
А наступит - я просто удалю переполненный файл. За что боролись - так сказать ...

greg zakharov,
Странно ...
Попробовал с вашим кодом
set key="HKEY_CURRENT_USER\Identities\%DefaultUserID%"
set key="%key:"=%\Software\Microsoft\Outlook Express\5.0"
и заработало.

И главное потом и с моим заработало ...
@echo off
set "exec=wmic useraccount where name="%username%" get sid /value"
for /f %%i in (' "%exec%" ') do 1>nul set "%%i"

set "exec=Reg QUERY HKEY_USERS\%sid%\Identities\ /v "Default User ID""
For /f "Tokens=5" %%i In (' "%exec%" ') Do set DefaultUserID=%%i

set key="HKEY_CURRENT_USER\Identities\%DefaultUserID%\Software\Microsoft\Outlook Express\5.0"
set val="Compact Check Count"
reg add %key% /v %val% /t REG_DWORD /f

Что же было не так - непонятно ...

А зачем: setlocal ... endlocal и зачем: exit /b если не трудно?

greg zakharov
05-01-2016, 17:32
А зачем: setlocal ... endlocal и зачем: exit /b если не трудно?
Setlocal
Начало области задания для определения переменных среды в пакетном файле. Локальное окружение используется до тех пор, пока не встретится команда endlocal или не будет достигнут конец пакетного файла.

Endlocal
Окончание использования локального окружения в пакетной программе, восстановление значений переменных среды, имевшихся до выполнения соответствующей команды setlocal.

Exit /b
Выход из текущего пакетного сценария без завершения работы командной строки.

ivisor
05-01-2016, 17:45
greg zakharov, Спасибо вам за оперативность.




© OSzone.net 2001-2012