Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Как добавлять новые значения в реестр Windows, не удаляя ста

Модерирует : KLASS, IFkO

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

Открыть новую тему     Написать ответ в эту тему

Carinakrd

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

Всего записей: 89 | Зарегистр. 13-08-2004 | Отправлено: 11:00 25-07-2006
cainer



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

Плохо когда не знаешь, да еще и забудешь
 
[ 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...............

Всего записей: 54 | Зарегистр. 13-01-2006 | Отправлено: 11:17 25-07-2006
Carinakrd

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
уточню проблему - к уже существующим путям в системе необходимо добавить новые пути. Если я создаю 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"    - выдало ошибку
 
Ошибка: Слишком много параметров в командной строке.

Всего записей: 89 | Зарегистр. 13-08-2004 | Отправлено: 12:02 25-07-2006
cainer



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
То есть тебе не новый параметр создать надо, а добавить в значение существуючего параметра что-то ??

Всего записей: 54 | Зарегистр. 13-01-2006 | Отправлено: 12:36 25-07-2006
Carinakrd

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
да, именно добавить к существующим значениям !

Всего записей: 89 | Зарегистр. 13-08-2004 | Отправлено: 13:01 25-07-2006
GoooRooo



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
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%
  Примечание:  Используйте в строке двойные символы процента ( %% )

Всего записей: 787 | Зарегистр. 01-12-2004 | Отправлено: 13:10 25-07-2006
Carinakrd

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
пробовал задавать команду reg add hklm\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\path /t reg_expand_sz /d "c:\newpath"    - выдало ошибку  
 
Ошибка: Слишком много параметров в командной строке.

Всего записей: 89 | Зарегистр. 13-08-2004 | Отправлено: 13:11 25-07-2006
GoooRooo



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Session Manager

Пробел считает концом пути
И кстати, нужно бы так:
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /d "c:\newpath"

Всего записей: 787 | Зарегистр. 01-12-2004 | Отправлено: 13:41 25-07-2006 | Исправлено: GoooRooo, 13:43 25-07-2006
Carinakrd

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
не помогло -(((
 
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /d "c:\newpath"
 
система спрашивает
 
"Value Path exists, overwrite(Y/N)? y  
 
Операция успешно завершена"
 
и старые пути благополучно накрываются...

Всего записей: 89 | Зарегистр. 13-08-2004 | Отправлено: 13:58 25-07-2006
cainer



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
!!!!!!!!!!!!!   Млин, тока ща обратил внимание на то, что ты хочешь изменить переменную %Path%,  если у тя xp, нуно установить Resource Kit, если 2003 ниче не надо
 
setx PATH "%PATH%;c:\newpath"

Всего записей: 54 | Зарегистр. 13-01-2006 | Отправлено: 14:24 25-07-2006
Carinakrd

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
setx PATH "%PATH%;c:\newpath" - добавляет путь в переменные среды текущего пользователя, но не системы
 
решение с Resource Kit не самое удачное, его еще устанавливать надо.
 
Вопрос в принципе - возможно ли делать импорт в реестр, добавляя значения существующим параметрам, а не заменяя их?

Всего записей: 89 | Зарегистр. 13-08-2004 | Отправлено: 15:15 25-07-2006
evle



1 + int rand(100);
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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 можно попытаться, но это вспоминать надо.

----------
For every complex problem, there is a solution that is simple, neat, and wrong.

Всего записей: 2110 | Зарегистр. 03-02-2005 | Отправлено: 15:43 25-07-2006
smf

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Можно так:

Код:
 
' Файл 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"
 

Данный случай только для типа REG_EXPAND_SZ, если надо для других, то можно просто сделать 3-ий параметр.

Всего записей: 166 | Зарегистр. 15-11-2002 | Отправлено: 13:31 26-07-2006
SHEVRSV



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Так у когото получилось или нет, а то пробую описанными выше методами, но увы результат нулевой.

Всего записей: 240 | Зарегистр. 02-05-2008 | Отправлено: 12:34 01-02-2009
nsky

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот часть скрипта (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
 

Блок, который начинается с "for /f "tokens=1,2,*"", собственно и изменяет (вставляет в начало) системную переменную PATH. Результат:
%FarHome%\Arc;%FarHome%\Bin;%PATH%
 
!!! ВАЖНО
Следует иметь в виду, что в Windows 2003 reg.exe работает некорректно!
В частности, он не выдает значение переменной PATH по команде:
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v "Path"
Поэтому у меня в текущем каталоге (там же где и Install.cmd) лежит reg.exe от XP!
!!!

Всего записей: 5 | Зарегистр. 26-12-2005 | Отправлено: 13:31 05-02-2009 | Исправлено: nsky, 13:51 05-02-2009
roru

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

 
pathman.exe /as "c:\newpath1";"c:\newpath2"  
утилита из ресурс кит

Всего записей: 11 | Зарегистр. 12-07-2004 | Отправлено: 17:09 18-06-2009 | Исправлено: roru, 00:48 22-06-2009
12tyjstul

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Carinakrd, а если сделать ключ реестра, как со стандартными переменными (т.е. теми,что были), так и с теми, что ты планируешь добавить?
т.е. ты будешь нерасширеный ключ реестра заменять более полным своим.
это же по сути будет то, к чему ты как бы и стремишься, если я все правильно осознал

Всего записей: 260 | Зарегистр. 21-07-2007 | Отправлено: 17:49 18-06-2009
kork1228



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Можно ли написать Скрипт ( bat файл ),который будучи  
помещен в папку Автозагрузки, автоматом  
добавлял бы в Реестр нужные данные,
не спрашивая подтверждение того ,  
что я хочу занести информацию в реестр,как это  
происходит при запуске обычного reg. файла.

Всего записей: 247 | Зарегистр. 21-01-2009 | Отправлено: 11:50 21-07-2010
NegoroX

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kork1228
Ключи запуска выше этажом от GoooRooo
 

Всего записей: 1407 | Зарегистр. 09-08-2006 | Отправлено: 13:00 21-07-2010
kork1228



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NegoroX
 
Вот конкретный файл. Куда добавить? И что далее?  
 
 
REGEDIT4  
 
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\............]  
"Info"=dword:............  
"Key"=hex:.............  
"Check"=dword:.........

Всего записей: 247 | Зарегистр. 21-01-2009 | Отправлено: 13:09 21-07-2010
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Как добавлять новые значения в реестр Windows, не удаляя ста


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru