Как программно узнать версию IIS?
От: Sinclair Россия https://github.com/evilguest/
Дата: 30.08.04 09:34
Оценка:
Задача: хочу написать html документ, в котором при помощи скрипта выяснить наличие и версию локального IIS.
Понятно, что можно сделать запрос к http://localhost:80/. Есть ли другие способы, без парсинга хидеров? Например, через ADSI?
Поиск в MSDN и здесь ничего не дал.
... << RSDN@Home 1.1.4 beta 1 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Как программно узнать версию IIS?
От: Andir Россия
Дата: 31.08.04 00:12
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Задача: хочу написать html документ, в котором при помощи скрипта выяснить наличие и версию локального IIS.

S>Понятно, что можно сделать запрос к http://localhost:80/. Есть ли другие способы, без парсинга хидеров? Например, через ADSI?
S>Поиск в MSDN и здесь ничего не дал.

Можно просто обратится к управляющим COM для IIS. Информацию ищи в скриптах администрирования для IIS (в частности adsutil.vbs). Искать скрипты в %SystemRoot%/system32/iis*.vbs + intepub/wwwroot/adminscripts/*.vbs
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/iis/using_iis_programmatic_administration.asp

вкратце, на JScript:
// WSH + ADSI
var obj = GetObject("IIS://localhost/W3SVC/Info");
WScript.Echo(obj.MajorIIsVersionNumber + "." + obj.MinorIIsVersionNumber)

// WMI
var locatorObj = new ActiveXObject("WbemScripting.SWbemLocator");
var providerObj = locatorObj.ConnectServer("localhost", "root/MicrosoftIISv2");
var nodeObj = providerObj.Get("IIsWebVirtualDir='W3SVC/Info'");

alert(obj.MajorIIsVersionNumber + "." + obj.MinorIIsVersionNumber);


P.S. Я не в курсе как с ADSI работать через ActiveX поэтому только на WSH.

С Уважением, Andir!
using(RSDN@Home 1.1.4 beta 2){/* Работаем! */}
Re[2]: Как программно узнать версию IIS?
От: Sinclair Россия https://github.com/evilguest/
Дата: 31.08.04 04:20
Оценка:
Здравствуйте, Andir, Вы писали:

A>Можно просто обратится к управляющим COM для IIS. Информацию ищи в скриптах администрирования для IIS (в частности adsutil.vbs). Искать скрипты в %SystemRoot%/system32/iis*.vbs + intepub/wwwroot/adminscripts/*.vbs

Уже смотрел.
A>http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/iis/using_iis_programmatic_administration.asp
Тоже смотрел. Все есть, про версию нету.
A>вкратце, на JScript:
A>// WSH + ADSI
A>var obj = GetObject("IIS://localhost/W3SVC/Info");
A>WScript.Echo(obj.MajorIIsVersionNumber + "." + obj.MinorIIsVersionNumber)
Увы:

undefined.undefined

... << RSDN@Home 1.1.4 beta 1 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[3]: Как программно узнать версию IIS?
От: Andir Россия
Дата: 31.08.04 05:28
Оценка:
Здравствуйте, Sinclair, Вы писали:

A>>http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/iis/using_iis_programmatic_administration.asp

S>Тоже смотрел. Все есть, про версию нету.

Всё там есть Версия IIS храниться в метабазе, и запрашивать его надо оттуда. Основной интерфейс для этого "IIS://localhost/W3SVC/Info";
Метабаза для IIS 6.0 храниться в xml в %SystemRoot%/system32/inetsrv/metabase.xml. По сути всё управление сводиться к чтению и изменению метабазы. А запросы вида IIS://localhost/W3SVC/Info являются почти XPath для метабазы ...

A>>вкратце, на JScript:

A>>// WSH + ADSI
A>>var obj = GetObject("IIS://localhost/W3SVC/Info");
A>>WScript.Echo(obj.MajorIIsVersionNumber + "." + obj.MinorIIsVersionNumber)
S>Увы:
S>

undefined.undefined


Странно, у меня точно выдаёт 6.0 на запущенном сервере. Ты запускал из под WSH? А то если из под браузера, то там надо ActiveX юзать ... А про ADSI с ActiveX я не в курсе.

Во втором примере я чуть ошибся там не так
// это *.htm
<script>
var locatorObj = new ActiveXObject("WbemScripting.SWbemLocator");
var providerObj = locatorObj.ConnectServer("localhost", "root/MicrosoftIISv2");

var obj = providerObj.get("IIsWebInfo='W3SVC/Info'");

alert(obj.MajorIIsVersionNumber + "." + obj.MinorIIsVersionNumber );
</script>


У меня оба примера выдают 6.0.

C Уважением, Andir!
using(RSDN@Home 1.1.4 beta 2){/* Работаем! */}
Re[4]: Как программно узнать версию IIS?
От: Sinclair Россия https://github.com/evilguest/
Дата: 31.08.04 06:51
Оценка:
Здравствуйте, Andir, Вы писали:

A>Странно, у меня точно выдаёт 6.0 на запущенном сервере. Ты запускал из под WSH? А то если из под браузера, то там надо ActiveX юзать ... А про ADSI с ActiveX я не в курсе.

Да, именно из-под WSH. Вариант на VBScript вместо undefined говорит Object does not support this property or method. Я думаю, дело в том, что у меня IIS 5.1. Надо уметь определять начиная с 5.0.
... << RSDN@Home 1.1.4 beta 1 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[5]: Как программно узнать версию IIS?
От: Andir Россия
Дата: 31.08.04 07:02
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Да, именно из-под WSH. Вариант на VBScript вместо undefined говорит Object does not support this property or method. Я думаю, дело в том, что у меня IIS 5.1. Надо уметь определять начиная с 5.0.


А второй пример?
Да я нашёл, что WMI IIS провайдер существует только начиная с шестой версии IIS. Однако просто WMI по идее должно работать, если найду поблизости IIS 5, то проверю.

C Уважением, Andir!
using(RSDN@Home 1.1.4 beta 2){/* Работаем! */}
Re[6]: Как программно узнать версию IIS?
От: Sinclair Россия https://github.com/evilguest/
Дата: 31.08.04 07:36
Оценка:
Здравствуйте, Andir, Вы писали:
A>Да я нашёл, что WMI IIS провайдер существует только начиная с шестой версии IIS. Однако просто WMI по идее должно работать, если найду поблизости IIS 5, то проверю.
Дело не в WMI. Просто у объекта Info нет никакого свойства MajorIIsVersionNumber.
Кстати, в MSDN по его поводу тоже ничего нет:
http://msdn.microsoft.com/library/en-us/iissdk/iis/ref_prog_iaorefiwi.asp
A>C Уважением, Andir!
... << RSDN@Home 1.1.4 beta 1 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Как программно узнать версию IIS?
От: LeoKem Россия  
Дата: 31.08.04 08:44
Оценка: -1
Здравствуйте, Sinclair, Вы писали:

S>Задача: хочу написать html документ, в котором при помощи скрипта выяснить наличие и версию локального IIS.

S>Понятно, что можно сделать запрос к http://localhost:80/. Есть ли другие способы, без парсинга хидеров? Например, через ADSI?
S>Поиск в MSDN и здесь ничего не дал.

как то ты друг мой ситный хреново искал видимо! http://msdn.microsoft.com/library/en-us/iissdk/iis/ref_vbom_reqocsv.asp?frame=true тут все прекрасно объяснено!
Re[2]: Как программно узнать версию IIS?
От: Sinclair Россия https://github.com/evilguest/
Дата: 31.08.04 08:56
Оценка: :)
Здравствуйте, LeoKem, Вы писали:

LK>как то ты друг мой ситный хреново искал видимо! http://msdn.microsoft.com/library/en-us/iissdk/iis/ref_vbom_reqocsv.asp?frame=true тут все прекрасно объяснено!

Как-то ты друг мой ситный хреново читал видимо! С серверной-то стороны все что угодно можно узнать. Ты со стороны клиента это сделай. Вот у меня стоит локально иис. А в C:\temp лежит страничка со скриптом. И вот как этому скрипту узнать, есть ли IIS на localhost?
... << RSDN@Home 1.1.4 beta 1 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[3]: Как программно узнать версию IIS?
От: LeoKem Россия  
Дата: 31.08.04 11:40
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, LeoKem, Вы писали:


LK>>как то ты друг мой ситный хреново искал видимо! http://msdn.microsoft.com/library/en-us/iissdk/iis/ref_vbom_reqocsv.asp?frame=true тут все прекрасно объяснено!

S>Как-то ты друг мой ситный хреново читал видимо! С серверной-то стороны все что угодно можно узнать. Ты со стороны клиента это сделай. Вот у меня стоит локально иис. А в C:\temp лежит страничка со скриптом. И вот как этому скрипту узнать, есть ли IIS на localhost?

в метабазе есть параметры с ID 1100, 1101, 1102

для 5.0
1101 — 5
1102 — 0

для 5.1
1101 — 5
1102 — 1

для 6.0
1101 — 6
1102 — 0

Очень похоже на то что это и есть инфа о версии
Re[7]: Как программно узнать версию IIS?
От: Andir Россия
Дата: 01.09.04 00:00
Оценка:
Здравствуйте, Sinclair, Вы писали:

A>>Да я нашёл, что WMI IIS провайдер существует только начиная с шестой версии IIS. Однако просто WMI по идее должно работать, если найду поблизости IIS 5, то проверю.

S>Дело не в WMI. Просто у объекта Info нет никакого свойства MajorIIsVersionNumber.
S>Кстати, в MSDN по его поводу тоже ничего нет:
S>http://msdn.microsoft.com/library/en-us/iissdk/iis/ref_prog_iaorefiwi.asp

Есть. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/iis/ref_mb_majoriisversionnumber.asp
Только там написано, что это IIS 6.0

Ну тогда я сдаюсь, похоже что в метабазе (до IIS6) не храниться версии. Поэтому остаётся только либо из реестра читать, либо читать версию dll у сервиса IIS.

var shell = WScript.CreateObject("WScript.Shell");

var major = shell.RegRead("HKLM\\System\\CurrentControlSet\\Services\\W3SVC\\Parameters\\MajorVersion");
var minor = shell.RegRead("HKLM\\System\\CurrentControlSet\\Services\\W3SVC\\Parameters\\MinorVersion");

WScript.Echo(major + "." + minor);


C Уважением, Andir!
using(RSDN@Home 1.1.4 beta 2){/* Работаем! */}
Re[4]: Как программно узнать версию IIS?
От: Sinclair Россия https://github.com/evilguest/
Дата: 01.09.04 03:43
Оценка:
Здравствуйте, LeoKem, Вы писали:

LK>в метабазе есть параметры с ID 1100, 1101, 1102


LK>для 5.0

LK>1101 — 5
LK>1102 — 0

LK>для 5.1

LK>1101 — 5
LK>1102 — 1

LK>для 6.0

LK>1101 — 6
LK>1102 — 0

LK>Очень похоже на то что это и есть инфа о версии

А как к ним обратиться по ID? Я прошу прощения за невежество, но здесь сказано, что это и есть Major/MinorVersionNumber. Я пробовал доступиться по имени (через ADSI) — хрен на рыло. Может, можно как-то по Internal ID в метабазу залезть?
... << RSDN@Home 1.1.4 beta 1 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[5]: Как программно узнать версию IIS?
От: LeoKem Россия  
Дата: 01.09.04 14:32
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, LeoKem, Вы писали:


LK>>в метабазе есть параметры с ID 1100, 1101, 1102


LK>>для 5.0

LK>>1101 — 5
LK>>1102 — 0

LK>>для 5.1

LK>>1101 — 5
LK>>1102 — 1

LK>>для 6.0

LK>>1101 — 6
LK>>1102 — 0

LK>>Очень похоже на то что это и есть инфа о версии

S>А как к ним обратиться по ID? Я прошу прощения за невежество, но здесь сказано, что это и есть Major/MinorVersionNumber. Я пробовал доступиться по имени (через ADSI) — хрен на рыло. Может, можно как-то по Internal ID в метабазу залезть?


в опчем диагноз заключается в том что 5.1 и более ранние версии не поддерживают Major/MinorVersionNumber ссылку к сожалению потерял. пытался найти метод как получить версию использую internal ID пока ни чего не вышло, если получится отпишу.
Re[6]: Как программно узнать версию IIS?
От: LeoKem Россия  
Дата: 01.09.04 15:53
Оценка:
LK>>>для 5.0
LK>>>1101 — 5
LK>>>1102 — 0

LK>>>для 5.1

LK>>>1101 — 5
LK>>>1102 — 1

LK>>>для 6.0

LK>>>1101 — 6
LK>>>1102 — 0

LK>>>Очень похоже на то что это и есть инфа о версии

S>>А как к ним обратиться по ID? Я прошу прощения за невежество, но здесь сказано, что это и есть Major/MinorVersionNumber. Я пробовал доступиться по имени (через ADSI) — хрен на рыло. Может, можно как-то по Internal ID в метабазу залезть?

http://msdn.microsoft.com/library/en-us/iissdk/iis/usingthemetabasereferencepages.asp?frame=true#id похоже что скриптами это уже не сделать, вопчем если чего нить у тебя получиться отпиши плз.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.