Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Как добавлять новые значения в реестр Windows, не удаляя ста

Автор: Carinakrd
Дата сообщения: 25.07.2006 10:00
Есть задача - автоматически (reg-файлом или иначе) добавить в ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\PATH (там записаны системные переменные путей) новые значения, сохранив при этом старые, т.е. дописать. Возможно, для кого-то ответ очевиден, но я что-то туплю ...-)
СПАСИБО
Автор: cainer
Дата сообщения: 25.07.2006 10:17

Цитата:
Возможно, для кого-то ответ очевиден, но я что-то туплю ...-)

Плохо когда не знаешь, да еще и забудешь

[ add.cmd ]
regedit.exe /s adding.reg

[ adding.reg ]
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Control Panel\Desktop]
"SCRNSAVE.EXE"=""
"ScreenSaveActive"="0"
"ScreenSaverIsSecure"="1"
"ScreenSaveTimeOut"="600"

Только файл adding.reg обязательно должен начинаться с
Windows Registry Editor Version 5.00

есть еще команды
reg, reg add, reg compare, regcopy...............
Автор: Carinakrd
Дата сообщения: 25.07.2006 11:02
уточню проблему - к уже существующим путям в системе необходимо добавить новые пути. Если я создаю reg-файл

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]

"Path"="новые пути"

то старые оказываются затертыми. Как сделать именно добавление?

пробовал задавать команду reg add hklm\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\path /t reg_expand_sz /d "c:\newpath" - выдало ошибку

Ошибка: Слишком много параметров в командной строке.
Автор: cainer
Дата сообщения: 25.07.2006 11:36
То есть тебе не новый параметр создать надо, а добавить в значение существуючего параметра что-то ??
Автор: Carinakrd
Дата сообщения: 25.07.2006 12:01
да, именно добавить к существующим значениям !
Автор: GoooRooo
Дата сообщения: 25.07.2006 12:10
REG ADD <раздел> [/v <параметр> | /ve] [/t <тип>] [/s <разделитель>]
[/d <данные>] [/f]

<раздел> [\\<компьютер>\]<путь>
<компьютер> Имя удаленного компьютера, если оно опущено, то по умолчанию
считается равным имени локального компьютера.
На удаленных компьютерах доступны только разделы HKLM и HKU.
<путь> Полный путь к разделу реестра в виде КОРЕНЬ\Подраздел.
<КОРЕНЬ> Корневой радел. Значения [ HKLM | HKCU | HKCR | HKU | HKCC ].

<подраздел> Полный путь к разделу реестра в выбранном корневом разделе.

/v Имя добавляемого параметра в указанном разделе.

/ve Добавить пустой параметр (По умолчанию) в указанный раздел.

/t Типы данных.
[REG_SZ | REG_MULTI_SZ | REG_DWORD_BIG_ENDIAN |
REG_DWORD | REG_BINARY | REG_DWORD_LITTLE_ENDIAN |
REG_NONE | REG_EXPAND_SZ ]
По умолчанию, считается равным REG_SZ.

/s Определяет разделитель, который используется для разделения данных в
многострочных параметрах типа REG_MULTI_SZ. По умолчанию, считается
равным "\0".

/d Значение, присеваемое добавляемому параметру реестра.
/f Принудительно перезаписывать существующие записи реестра
без предупреждения.

Примеры:

REG ADD \\ABC\HKLM\Software\MyCo
Добавляет раздел HKLM\Software\MyCo на удаленный компьютер ABC

REG ADD HKLM\Software\MyCo /v Data /t REG_BINARY /d fe340ead
Добавляет параметр с именем: Data, типом: REG_BINARY, и значением: fe340ead

REG ADD HKLM\Software\MyCo /v MRU /t REG_MULTI_SZ /d fax\0mail
Добавляет параметр с именем: MRU, типом: REG_MUTLI_SZ,
и значением: fax\0mail\0\0

REG ADD HKLM\Software\MyCo /v Path /t REG_EXPAND_SZ /d %%systemroot%%
Добавляет параметр с именем: Path, типом: REG_EXPAND_SZ,
и значением: %systemroot%
Примечание: Используйте в строке двойные символы процента ( %% )
Автор: Carinakrd
Дата сообщения: 25.07.2006 12:11
пробовал задавать команду reg add hklm\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\path /t reg_expand_sz /d "c:\newpath" - выдало ошибку

Ошибка: Слишком много параметров в командной строке.
Автор: GoooRooo
Дата сообщения: 25.07.2006 12:41

Цитата:
Session Manager

Пробел считает концом пути
И кстати, нужно бы так:
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /d "c:\newpath"
Автор: Carinakrd
Дата сообщения: 25.07.2006 12:58
не помогло -(((

reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /d "c:\newpath"

система спрашивает

"Value Path exists, overwrite(Y/N)? y

Операция успешно завершена"

и старые пути благополучно накрываются...
Автор: cainer
Дата сообщения: 25.07.2006 13:24
!!!!!!!!!!!!! Млин, тока ща обратил внимание на то, что ты хочешь изменить переменную %Path%, если у тя xp, нуно установить Resource Kit, если 2003 ниче не надо

setx PATH "%PATH%;c:\newpath"
Автор: Carinakrd
Дата сообщения: 25.07.2006 14:15
setx PATH "%PATH%;c:\newpath" - добавляет путь в переменные среды текущего пользователя, но не системы

решение с Resource Kit не самое удачное, его еще устанавливать надо.

Вопрос в принципе - возможно ли делать импорт в реестр, добавляя значения существующим параметрам, а не заменяя их?
Автор: evle
Дата сообщения: 25.07.2006 14:43
Carinakrd

Цитата:
setx PATH "%PATH%;c:\newpath" - добавляет путь в переменные среды текущего пользователя, но не системы


Цитата:

1) Command Line Mode: setx variable value [-m]
Optional Switches:
-m Set value in the Machine environment. Default is User.

setx есть в Support Tools и устанавливать его не надо, просто скопировать exe в подходящее место.

Цитата:
Вопрос в принципе - возможно ли делать импорт в реестр, добавляя значения существующим параметрам, а не заменяя их?

Импорт - нельзя. По сути это операция - установка нового значения ключа, просто значение берётся с учётом предыдущего.
Можно с помощью reg query получить текущее значение, исправить и через reg add установить. Но reg query выдаёт значение в таком формате, что без grep разобрать сложно будет.
Через vbs можно попытаться, но это вспоминать надо.
Автор: smf
Дата сообщения: 26.07.2006 12:31
Можно так:

Код:
' Файл editval.vbs
' 1-ый параметр -- путь
' 2-ой параметр -- добавляемое значение

Dim WshShell, bKey
Set WshShell=WScript.CreateObject("WScript.Shell")
bKey=WshShell.RegRead(WScript.Arguments.Item(0))
WshShell.RegWrite WScript.Arguments.Item(0), bKey & ";" & WScript.Arguments.Item(1), "REG_EXPAND_SZ"
Автор: SHEVRSV
Дата сообщения: 01.02.2009 11:34
Так у когото получилось или нет, а то пробую описанными выше методами, но увы результат нулевой.
Автор: nsky
Дата сообщения: 05.02.2009 12:31
Вот часть скрипта (Install.cmd) которым я инсталлирую Far Manager:

Код:
@echo off & setlocal enableDelayedExpansion
pushd %~dp0\..
set FarHome=%cd%
popd
pushd %~dp0

:: Environment
set bin=%%FarHome%%\Bin
set arc=%bin%\Arc
set key=HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
reg add "%key%" /f /v "FarHome" /d "%FarHome%"

for /f "tokens=1,2,*" %%n in ('reg query "%key%" /v "Path"^|find /i "REG_EXPAND_SZ"') do set P=%%p
if "%P%" neq "" (
    set P0=%P%
    for /f %%c in ('echo %P%^|find /i /c "%bin%"') do if "%%c" equ "0" set P=%bin%;!P!
    for /f %%c in ('echo %P%^|find /i /c "%arc%"') do if "%%c" equ "0" set P=%arc%;!P!
)
if "%P%" neq "%P0%" reg add "%key%" /f /v "Path" /t REG_EXPAND_SZ /d "%P%"
"%FarHome%\Bin\nircmd.exe" sysrefresh environment

:: ... censored

popd
endlocal
exit /b
Автор: roru
Дата сообщения: 18.06.2009 16:09

Цитата:
Есть задача - ... добавить ... системные переменные путей новые значения, сохранив при этом старые, т.е. дописать


pathman.exe /as "c:\newpath1";"c:\newpath2"
утилита из ресурс кит
Автор: 12tyjstul
Дата сообщения: 18.06.2009 16:49
Carinakrd, а если сделать ключ реестра, как со стандартными переменными (т.е. теми,что были), так и с теми, что ты планируешь добавить?
т.е. ты будешь нерасширеный ключ реестра заменять более полным своим.
это же по сути будет то, к чему ты как бы и стремишься, если я все правильно осознал
Автор: kork1228
Дата сообщения: 21.07.2010 10:50
Можно ли написать Скрипт ( bat файл ),который будучи
помещен в папку Автозагрузки, автоматом
добавлял бы в Реестр нужные данные,
не спрашивая подтверждение того ,
что я хочу занести информацию в реестр,как это
происходит при запуске обычного reg. файла.
Автор: NegoroX
Дата сообщения: 21.07.2010 12:00
kork1228
Ключи запуска выше этажом от GoooRooo

Автор: kork1228
Дата сообщения: 21.07.2010 12:09
NegoroX

Вот конкретный файл. Куда добавить? И что далее?


REGEDIT4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\............]
"Info"=dword:............
"Key"=hex:.............
"Check"=dword:.........
Автор: NegoroX
Дата сообщения: 21.07.2010 14:19
kork1228
ты из этого текста создай файл name.reg и запускай regedit /s name.reg
более подробно тут
http://sniperteam.narod.ru/secur/win/reg.htm
Автор: kork1228
Дата сообщения: 21.07.2010 16:17
NegoroX
Спасибо большое за помощь. Сделал батник.

Страницы: 1

Предыдущая тема: Как открыть зашифрованные файлы?


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.