ClearMyTracksByProcess без диалога |WinHttp.WinHttpRequest.5.1 |Msxml2.XMLHTTP - PullRequest
1 голос
/ 06 октября 2019

У меня есть VBS, который работает CreateObject("MSXML2.XMLHTTP").Open "GET", однако мне нужно удалить кэш IE11 перед его запуском, потому что get продолжает тянуть кешированную версию веб-сайта, срок действия которого не истекает в течение 1 минуты после первоначального получения. Если я использую RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8, отображается диалоговое окно, которое отвлекает внимание и фокусируется.

myURL = "https://localhost/"

Set ohtmlFile = CreateObject("htmlfile")

Set oXMLHttp = CreateObject("MSXML2.XMLHTTP")
oXMLHttp.Open "GET", myURL , False
oXMLHttp.setRequestHeader "Cache-Control", "no-cache"
oXMLHttp.send

If oXMLHttp.Status = 200 Then

    ohtmlFile.Write oXMLHttp.responseText
    ohtmlFile.Close

Не изменяет файловый кеш, все еще истекает через одну минуту после первоначального извлечения.

++++++++++++++++++++++++++++++++++++++++++++++

myURL = "https://localhost/"

Set ohtmlFile = CreateObject("htmlfile")

Set oXMLHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
oXMLHttp.Open "GET", myURL , False
oXMLHttp.setRequestHeader "Cache-Control", "no-cache"
oXMLHttp.send

If oXMLHttp.Status = 200 Then

    ohtmlFile.Write oXMLHttp.responseText
    ohtmlFile.Close

oXMLHttp.responseText ничего не возвращает

++++++++++++++++++++++++++++++++++++++

CreateObject("WScript.Shell").Run "scripts\exe\PsExec64.exe -accepteula -nobanner -realtime -d RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8", 0, True

CreateObject("WScript.Shell").Run "scripts\exe\PsExec64.exe -accepteula -nobanner -realtime -d RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 264", 0, True

Оба все еще случайным образом отображают всплывающее диалоговое окно.

1 Ответ

1 голос
/ 06 октября 2019

Чтобы избежать получения кэшированного ответа, вы можете вместо этого использовать объект ServerXmlHttpRequest и установить заголовок Cache-Control:

Set oXMLHttp = CreateObject("Msxml2.ServerXMLHTTP")

With oXMLHttp
    .open "GET", myURL, False
    .setRequestHeader "Cache-Control", "max-age=0"
    .send
End With

Он также должен работать с объектом WinHTTPRequest:

Set oXMLHttp = CreateObject("WinHttp.WinHttpRequest.5.1")

По моему опыту, с WinHttpRequest вам даже не нужно устанавливать заголовок Cache-Control, так что вы можете все настроить, просто изменив MSXML2.XMLHTTP на WinHttp.WinHttpRequest.5.1 в своем коде. Однако добавить заголовок не повредит.

Это должно решить начальную проблему с извлечением кэшированной версии.

...