Как найти относительный путь к C:\Inetpub\AdminScripts\ADSUTIL.VBS?
-
13-09-2019 - |
Вопрос
IIS 6 и более ранние версии поставляются с служебным сценарием под названием АДСУТИЛ.VBS:
AdSutil.VBS - это утилита администрирования IIS, которая использует Microsoft Visual Basic Basic Edition (VBScript) с интерфейсами Active Directory Service (ADSI) для манипулирования конфигурацией IIS.Этот скрипт следует запустить с помощью CSCRICT, который установлен с помощью хоста скрипта Windows.
Другими словами, этот инструмент позволяет вам изменить Метабаза IIS настройки программно, из командной строки.
Я хотел бы вызвать этот инструмент из проекта InstallShield, чтобы внести некоторые изменения в конфигурацию IIS.Мне любопытно, законно ли перераспространение сценария (в исходном коде нет юридической формулировки) или просто запустить команду через:
CSCRIPT %SYSTEMDRIVE%\Inetpub\AdminScripts\adsutil.vbs
и надеемся, что сценарий существует на диске в этом месте.
Итак, мой вопрос - будет ли он всегда существовать по указанному выше пути, даже если некоторые другие веб-сайты (корни inetpub) на машине расположены на несистемном диске?Кажется, что все статьи MSDN и другие статьи базы знаний Microsoft, в которых упоминается инструмент ADSUTIL, используют указанный выше путь %SYSTEMDRIVE%.
я это вижу по крайней мере еще одна попытка справиться с этим распространяя cscript.exe иadsutil.vbs вместе с их проектами InstallShield.
Возможно, существует ключ реестра или другой способ узнать местоположение пути Inetpub\AdminScripts?
Может быть, мне стоит просто написать Приложение C#, изменяющее значение или мой собственный VBScript и вместо этого распространять с помощью моего собственного маленького приложения?
Решение 2
я работал в Ответ Дж. Шумейкера решить проблему.Лучшим маршрутом кажется следующая функция InstallScript, которую я вызываю для запуска пакетного сценария:
prototype SetIISValues();
function SetIISValues()
string szProgram, szCmd;
begin
szProgram = TARGETDIR + "SetIISValues.bat";
szCmd = "";
LaunchAppAndWait (szProgram, szCmd, LAAW_OPTION_WAIT);
end;
Пакетный скрипт вызывает это:
@echo off
cscript.exe SetIISValues.vbs
И VBScript выглядит так:
Option Explicit
Dim IIsObject
Set IIsObject = GetObject("IIS://localhost/w3svc/1")
IIsObject.Put "Name", "Value"
IIsObject.Setinfo
Поступая таким образом, вы избавляетесь от необходимости использовать ADSUTIL.VBS как часть установки — (относительный) путь к нему не имеет значения, если вам не нужно его использовать.
Другие советы
Недавно я столкнулся с подобной проблемой и решил просто переработать небольшой фрагмент vbscript, чтобы использовать его в дополнительном действии в установщике MSI.Может потребоваться некоторое время, чтобы понять суть того, как adutil.vbs работает, но он очень хорошо написан.Например, мне нужно было переключить пул приложений в классический режим вместо интегрированного и явно настроить его для запуска в 32-битном режиме в 64-битных окнах. В дистиллированной форме это привело к следующему:
Option Explicit Dim IIsObject Set IIsObject = GetObject("IIS://LocalHost/W3SVC/AppPools/TestPool") IIsObject.Put "ManagedPipelineMode", 1 IIsObject.Setinfo IIsObject.Put "Enable32BitAppOnWin64", CBool("True") IIsObject.Setinfo