Имя пользователя:
Пароль:
 

Название темы: Регфайл, синтаксис.
Показать сообщение отдельно

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


коль пошла такая пьянка, кину и свой вариант
Код: Выделить весь код
$hFile = FileOpen("C:\TEST\TEST.reg", 8+2)

_RegValSave($hFile, "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\USBSTOR","DisplayName|Start|ImagePath")
_RegValSave($hFile, "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion","DevicePath|ProgramFilesDir", 1)
_RegValSave($hFile, "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams\0","ViewView2", 1)

Func _RegValSave($file, $key, $vals = "", $iAdd = 0)
    Local $val, $txt = ""
    If Not(IsArray($vals)) Then $vals = StringSplit($vals,",;|",2)
    For $i=0 To UBound($vals)-1
        $val = RegRead($key, $vals[$i])
        If @error Then ContinueLoop
        $txt &= _RegValFormat($vals[$i], $val, @extended) &@CRLF
    Next
    If $txt == "" Then Return SetError(1, 0, 0)

    If IsString($file) Then $file = FileOpen($file, 8+2)
    If $file = -1 Then Return SetError(2, 0, 0)
    If $iAdd =0 Then FileWrite($file,'Windows Registry Editor Version 5.00'&@CRLF)
    Return FileWrite($file, @CRLF&"["& $key &"]"&@CRLF& $txt)
EndFunc

Func _RegValFormat($sVal, $xData, $iType = 1)
    If $iType=1 Then Return '"'& $sVal &'"="'& $xData &'"' ; REG_SZ
    If $iType=4 Then Return '"'& $sVal &'"=dword:'& Hex(Int($xData),8) ; REG_DWORD

    Local $sLeft='"'& $sVal &'"=hex('& $iType &'):', $sData, $iData, $iWrap=80
    If $iType=2 Then $xData=StringToBinary($xData & Chr(0), 2) ; REG_EXPAND_SZ
    If $iType=3 Then $sLeft='"'& $sVal &'"=hex:' ; REG_BINARY
    If $iType=7 Then $xData=StringToBinary(StringRegExpReplace($xData &@LF,"[\n\r]+",Chr(0)) &Chr(0), 2) ; REG_MULTI_SZ
    If Not(IsBinary($xData)) Then $xData = Binary(StringRegExpReplace($xData,"^(?i:\s*0x)?((?:[[:xdigit:]]{2})+)$","0x\1"))
    $xData = StringTrimRight(StringRegExpReplace(Hex($xData),"(..)", "\1,"), 1)

    While StringLen($sLeft)+StringLen($xData)>$iWrap
        $iData = Int(($iWrap-StringLen($sLeft)-1)/3)*3
        $sData&= $sLeft & StringLeft($xData, $iData) &"\" &@CRLF
        $xData = StringMid($xData, $iData+1)
        $sLeft="  "
    WEnd
    Return $sData & $sLeft  & $xData
EndFunc
Цитата proxy:
эть, не чем же заняться в свободное время ... »
честно говоря, не пойму чем semiono не устроил батник
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:21, 25-06-2009 | #23

Название темы: Регфайл, синтаксис.