Мне нужно создать сценарий для работы на сервере, к которому у меня нет доступа.
Мне нужен сценарий для добавления строки к существующему строковому значению (Type = REG_SZ). Сценарий не может просто заменить всю строку новым значением, так как я не знаю, что сейчас находится в записи, и я не могу потерять то, что уже есть.
Я думал о regini.exe, но не мог понять, как экспортировать, добавлять, импортировать с помощью regini.exe и командного файла. Может быть, PowerShell сможет помочь.
Powershell - отличная ставка.
$AppendValue="\Homes"
$RegRoot=Get-ItemProperty "hklm:\software\microsoft\windows\currentversion"
$RegValue=$RegRoot.CommonFilesDir+$AppendValue
Set-ItemProperty -path HKLM:\software\microsoft\windows\Currentversion -Name CommonFilesDir -Value $RegValue
Windows нервничает из-за всего, что касается reg или registry.exe, где сценарии, подобные приведенным выше, могут выполняться с меньшими жалобами.
Vbscript тоже это сделает
Set WshShell = WScript.CreateObject("WScript.Shell")
Dim Temp
'For the purpose of demonstration create a new key and give it a default of 1
WshShell.RegWrite "HKCU\MyNewKey\", 1 ,"REG_SZ"
'Add a value
WshShell.RegWrite "HKCU\MyNewKey\MyValue", "Hello world!"
'read the value we just wrote append more text to it and write it back
Temp = WshShell.RegRead("HKCU\MyNewKey\MyValue")
Temp = Temp & " More Text"
WshShell.RegWrite "HKCU\MyNewKey\MyValue",Temp
Вы можете добиться этого с помощью PowerShell или с помощью Windows REG.EXE, например:
@echo off
setlocal
set SERVER=myserver
set KEY=HKLM\Software\Microsoft\Windows\CurrentVersion\Run
set VALUE=myvalue
set APPEND_DATA=my appended text
REM *** GET THE EXISTING VALUE
for /f "tokens=2,*" %%V in ('%SystemRoot%\System32\reg.exe query "\\%SERVER%\%KEY%" /v "%VALUE%"') do set DATA=%%W
REM *** SET THE VALUE
set DATA=%DATA:"=\"%
%SystemRoot%\System32\reg.exe add "\\%SERVER%\%KEY%" /v "%VALUE%" /t REG_SZ /f /d "%DATA%%APPEND_DATA%"
endlocal