У меня есть VBScript для резервного копирования нескольких ключей реестра в один файл:
Set objShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
arrRegPaths = Array( _
"HKEY_CURRENT_USER\RegKey1\", _
"HKEY_CURRENT_USER\RegKey2\", _
"HKEY_CURRENT_USER\RegKey3\" _
)
Const intForReading = 1
Const intUnicode = -1
strFileName = objShell.ExpandEnvironmentStrings("%UserProfile%") & "\FolderName\FileName.reg"
Set objRegFile = objFSO.CreateTextFile(strFileName, True, True)
objRegFile.WriteLine "Windows Registry Editor Version 5.00"
For Each strRegPath In arrRegPaths
strCommand = "cmd /c REG EXPORT " & strRegPath & " " & Replace(strRegPath, "\", "_") & ".reg"
objShell.Run strCommand, 0, True
If objFSO.FileExists(Replace(strRegPath, "\", "_") & ".reg") = True Then
Set objInputFile = objFSO.OpenTextFile(Replace(strRegPath, "\", "_") & ".reg", intForReading, False, intUnicode)
If Not objInputFile.AtEndOfStream Then
objInputFile.SkipLine
objRegFile.Write objInputFile.ReadAll
End If
objInputFile.Close
Set objInputFile = Nothing
objFSO.DeleteFile Replace(strRegPath, "\", "_") & ".reg", True
End If
Next
objRegFile.Close
Set objRegFile = Nothing
Я могу запустить его прямо из Проводника (Win10), напрямую из CMD или с помощью WScript / CScript, и он отлично работает. Требуется около 2 секунд, и выходной файл имеет все, что должен иметь.
Но когда я пытаюсь запустить его как запланированное задание, оно никогда не завершается. Я оставил его на несколько минут, а потом убил вручную. Когда я смотрю на выходной файл после этого, все, что у него есть - это первая строка, Редактор реестра Windows, версия 5.00. Так что я знаю, что скрипт находит целевой файл в порядке, и он запускает первый WriteLine. Но после этого он зависает или что-то в этом роде.
Как я могу заставить его работать как запланированное задание?