Доброго дня!
Падает функция _RegCopyKey (качал udf с creator-lab). Пытаюсь копирнуть раздел в котором около сотни разделов. Может стоит как-нибудь функцию модифицировать чтобы она без рекурсии работала или просто она не предназначена для такой операции?
Чтобы далеко не бегать никому, вот сама функция (попробуйте с ее помощью скопировать большой раздел и будет падение):
Падает функция _RegCopyKey (качал udf с creator-lab). Пытаюсь копирнуть раздел в котором около сотни разделов. Может стоит как-нибудь функцию модифицировать чтобы она без рекурсии работала или просто она не предназначена для такой операции?
AutoIt Error
---------------------------
Line 2534 (File "C:\Documents and Settings\Administrator\Start Menu\Programs\Startup\test.exe"):
Error: Recursion level has been exceeded - AutoIt will quit to prevent stack overflow.
---------------------------
OK
Чтобы далеко не бегать никому, вот сама функция (попробуйте с ее помощью скопировать большой раздел и будет падение):
Код:
Func _RegCopyKey($s_Key, $d_Key, $iDelete = False)
Local $i, $sVal, $sData, $sType, $sKey
RegWrite($d_Key) ; write dest Key, in case Key empty
If @error <> 0 Then Return @error ; some error
; Value loop
$i = 0
While 1
$i += 1
$sVal = RegEnumVal($s_Key, $i)
If @error <> 0 Then ExitLoop ; no more Values
$sData = RegRead($s_Key, $sVal)
If @error <> 0 Then ContinueLoop ; some error reading Value, skip it
$sType = _RegGetExtendedType(@extended)
RegWrite($d_Key, $sVal, $sType, $sData) ; write new Value
WEnd
; Key loop
$i = 0
While 1
$i += 1
$Key = RegEnumKey($s_Key, $i)
If @error <> 0 Then ExitLoop ; no more Keys
_RegCopyKey($s_Key & "\" & $sKey, $d_Key & "\" & $sKey) ; recurse
WEnd
; move Key
If $iDelete Then RegDelete($s_Key)
EndFunc ;==>_RegCopyKey