Как я могу проверить, является ли «Microsoft Windows 7 Home Premium» операционной системой, использующей VBScript? - PullRequest
0 голосов
/ 23 января 2010

Моя первая попытка - запросить заголовок в Win32_OperatingSystem и проверить, соответствует ли заголовок операционной системе, для которой я проверяю:

Dim objWMIService, strComputer
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")


msgbox getOperatingSystemCaption()
msgbox meetsOperatingSystemRequirement()



Function getOperatingSystemCaption()

     Dim strCaption, colOperatingSystems, objOperatingSystem

     Set colOperatingSystems = objWMIService.ExecQuery _
          ("Select * from Win32_OperatingSystem")

     For Each objOperatingSystem in colOperatingSystems
        strCaption = objOperatingSystem.Caption
        Exit For 
     Next

    getOperatingSystemCaption = strCaption

End Function





Function meetsOperatingSystemRequirement()

    meetsOperatingSystemRequirement = False 

    If getOperatingSystemCaption() = "Microsoft Windows 7 Home Premium" Then 

       meetsOperatingSystemRequirement = True

    End If 


End Function

Полагаю, я могу использовать InStr, однако до сих пор не понимаю, почему "Заголовок" и моя строка не равны.

1 Ответ

2 голосов
/ 23 января 2010

Вы уверены, что используете «Microsoft Windows XP», а не «Microsoft Windows XP Professional»? Если вы используете знак «=», вы не поймаете его, потому что он ожидает совпадения с точной строкой Использовать instr () было бы лучше, если вы хотите частичное совпадение. В противном случае добавьте «Профессионал»

Вы можете включить некоторую отладку после того, как заголовок найден

....
        msgbox strCaption & " " & len(strCaption)
        getOperatingSystemCaption = strCaption
....

и попробуйте другой способ

.....
    myCaption = getOperatingSystemCaption()
     msgbox myCaption & " " & len(myCaption)
    If myCaption = "Microsoft Windows XP Premium Home" Then 
......

проверьте длину ...

...