Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Автоматическая установка Windows 2000/XP/2003 (http://forum.oszone.net/forumdisplay.php?f=32)
-   -   [решено] Как добавлять новые значения в реестр Windows, не удаляя старые (http://forum.oszone.net/showthread.php?t=68925)

Carina 25-07-2006 11:22 464627

Как добавлять новые значения в реестр Windows, не удаляя старые
 
К вопросу автоматической установки чего-либо...

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

ANDYru 25-07-2006 13:14 464660

действительно элементарно - сохрани нужную готовую ветку и отредактируй оставив то что нужно дописать и всё

Sanja Alone 26-07-2006 04:38 464921

Carina
Цитата:

добавить в ветку новые значения, сохранив при этом старые, т.е. дописать
В кач-ве примера приведу два способа добавления пути в Path:
  • Способ 1: AutoIt-скрипт
    Код:

    ;какой путь нужно дописать в переменную Path
    $addtopath="%ProgramFiles%\7-Zip"
    ;извлечение текущего содержимого переменной Path
    $curpath=RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment","Path")
    ;если дописываемого пути нет в переменной Path, то дополняем ее
    If Not StringInStr ($curpath,$addtopath) and Not StringInStr ($curpath,@ProgramFilesDir&"\7-Zip") Then
    RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment","Path","REG_EXPAND_SZ",$curpath & ";" & $addtopath)
    EndIf

  • Способ 2: пакетный (bat, cmd) файл
    Код:

    @echo off
    rem какой путь нужно дописать в переменную Path
    set addtopath=%ProgramFiles%\7-Zip
    rem извлечение текущего содержимого переменной Path
    rem !ВАЖНО! - в кач-ве разделителя нужно указать только символ табуляции
    rem (ASCII-код символа после знака "равно" в выделенном фрагменте должен быть 09)

    for /F "tokens=3 delims=        " %%j in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path') do (set curpath=%%j)
    rem проверка наличия дописываемого значения в переменной Path (для избежания дублирования)
    for /F %%j in ('echo %curpath% ^| find /C /I "%addtopath%"') do (set isinpath=%%j)
    rem если дописываемого пути нет в переменной Path, то дополняем ее
    if %isinpath% == 0 (
    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /d "%curpath%;%addtopath%" /f
    )


Vadikan 26-07-2006 06:08 464925

Carina
Впредь прошу не плодить одинаковых тем в разных форумах - это нарушает правила конференции. Спасибо.


Время: 12:09.

Время: 12:09.
© OSzone.net 2001-