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

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

Модерирует : gyra, Maz

Widok (01-06-2010 13:08): Лимит страниц. Продолжаем здесь.  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

AZJIO



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

Код:
$sKey='HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics'
$Data=''
$Re=''
RegReplace($sKey)
;MsgBox(0, "ага", $Data)
;===========================

$filename=@ScriptDir&'\backup'
; генерируем имя нового файла с номером копии на случай если файл существует
$i = 1
While FileExists($filename&$i&'.reg')
    $i +=1
WEnd
$filename=$filename&$i&'.reg'
$filebackup = FileOpen($filename, 2) ; открываем бэкап-файл
FileWrite($filebackup, 'Windows Registry Editor Version 5.00'&@CRLF&@CRLF&$Data)
;FileWrite($filebackup, 'REGEDIT4'&@CRLF&@CRLF&$Data) ; для win98
FileClose($filebackup)
;===========================
 
Func RegReplace($sKey)
;$sKey - исходная ветка
    Local $i, $sTemp, $sValuename, $sValue, $sValuetype
    $i
= 0
    While 1
        $i += 1
        $sValuename = RegEnumVal($sKey, $i)
        If @error Then ExitLoop
        $sValue = RegRead($sKey, $sValuename)
        If @error=1 or @error=-1 or @error=-2 Then ContinueLoop
        $sValuetype = @extended
;здесь идет модификация реестра
        $sKeyYYY = StringTrimRight($sKey & '\' & $sTemp,1)
        $sValuename=StringRegExpReplace($sValuename,'[\\]',"\\$0") ; всегда заменяем в параметре наклонную черту на двойную
        Switch $sValuetype
            Case 1, 2, 7
            ;ContinueLoop
                $sValue=StringRegExpReplace($sValue,'["\\]',"\\$0")
                $sValue=StringRegExpReplace($sValue,'=\\"\\"','="\\"')
                $sValue=StringRegExpReplace($sValue,'\\"\\"','\\""')
                If $Re=$sKeyYYY Then
                $Data&='"'&$sValuename&'"="'&$sValue&'"'&@CRLF
                Else
                $Data&=@CRLF&'['&$sKeyYYY&']'&@CRLF&'"'&$sValuename&'"="'&$sValue&'"'&@CRLF
                $Re=$sKeyYYY
                EndIf
            Case
4
            ;ContinueLoop
                If $Re=$sKeyYYY Then
                $Data&='"'&$sValuename&'"=dword:'&Hex ( $sValue )&@CRLF
                Else
                $Data&=@CRLF&'['&$sKeyYYY&']'&@CRLF&'"'&$sValuename&'"=dword:'&Hex ( $sValue )&@CRLF
                $Re=$sKeyYYY
                EndIf
            Case
3
            ;ContinueLoop
                $hex=''
                $len = StringLen($sValue)
                $s=0
                $r=0
                For $i = 3 To $len Step 2
                $hex2 = StringMid($sValue, $i, 2)
                If $s=21 or $r=24 Then
                    $hex&=$hex2&',\'&@CRLF&'  '
                    $s=22
                    $r=0
                Else
                    $hex&=$hex2&','
                    $s+=1
                    $r+=1
                EndIf
                Next
                $hex = StringTrimRight($hex,1)
 
                If $Re=$sKeyYYY Then
                $Data&='"'&$sValuename&'"=hex:'&$hex&@CRLF
                Else
                $Data&=@CRLF&'['&$sKeyYYY&']'&@CRLF&'"'&$sValuename&'"=hex:'&$hex&@CRLF
                $Re=$sKeyYYY
                EndIf
            Case Else
                $Data&='# error... ключ:"'&$sKeyYYY&'" параметр:"'&$sValuename&'" значение:"'&$sValue&'" тип:"'&$sValuetype&'"'&@CRLF
        EndSwitch
    WEnd
;рекурсия
    $i = 0
    While 1
        $i += 1
        $sTemp = RegEnumKey($sKey, $i)
        If @error Then ExitLoop
        RegReplace($sKey & '\' & $sTemp)
    WEnd
    $Data=StringReplace($Data, '""=', '@=')
    Return
EndFunc

Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 17:16 08-04-2010 | Исправлено: AZJIO, 00:22 09-04-2010
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 2)
Widok (01-06-2010 13:08): Лимит страниц. Продолжаем здесь.


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru