У меня есть html-приложение (HTA), которое использует WshShell.Exec для получения версии Windows.Я использую wmic os get Caption
, чтобы получить конкретную версию, которая прекрасно работает в командной строке и в пакетном скрипте.Я также проверил способ, которым я звоню WshShell.Exec
, и он отлично работает с другими командами (то есть echo Windows 2008
).Проблема возникает, когда я пытаюсь объединить эти вещи, кажется, что Exec просто зависает.Можете ли вы порекомендовать способ обойти это?Вот мой код:
Function GetWinVersion
'Returns 2008, XP, or 7
set WshShell = CreateObject("WScript.Shell")
set oExec = WshShell.Exec("wmic os get Caption")
do while oExec.Status = 0
'I added this very busy wait, though it doesn't seem to help
'Would sleep if it was available in an hta
loop
While oExec.StdOut.AtEndOfStream <> True
thisLine = oExec.StdOut.ReadLine
'MsgBox "Found line: " & thisLine
if InStr(thisLine, "2008") > 0 then
GetWinVersion=2008
Exit Function
elseif InStr(thisLine, "XP") > 0 then
GetWinVersion=XP
Exit Function
elseif InStr(thisLine, "Windows 7") > 0 then
GetWinVersion=7
Exit Function
end if
Wend
MsgBox "Error parsing output of wmic os get Caption"
self.Close
End Function