代码之家  ›  专栏  ›  技术社区  ›  Mike Atlas

如何找到C:\Inetpub\AdminScripts\ADSUTIL.VBS的相对路径?

  •  4
  • Mike Atlas  · 技术社区  · 15 年前

    IIS 6及更早版本附带一个名为 ADSUTIL.VBS :

    Adsutil.vbs是一个IIS管理程序 接口(ADSI)来操作 可以使用CScript运行,这是 与Windows脚本主机一起安装。

    换句话说,此工具允许您进行更改 IIS metabase

    CSCRIPT %SYSTEMDRIVE%\Inetpub\AdminScripts\adsutil.vbs
    

    所以我的问题是

    至少我看到了 one other attempt to deal with this 通过分发cscript.exe和adsutil.vbs及其InstallShield项目。

    可能存在注册表项或其他方法来获取Inetpub\AdminScripts路径的位置?

    也许我应该写封信 C# application that changes the value my own VBScript 然后用我自己的小应用程序分发?

    2 回复  |  直到 15 年前
        1
  •  3
  •   JShumaker    15 年前

    我最近遇到了一个类似的问题,决定只修改一点vbscript,以便在msi安装程序的自定义操作中使用。要弄清楚adsutil.vbs是如何工作的,可能需要一点时间,但它编写得非常好。例如,我需要将应用程序池切换到Classic而不是Integrated模式,并在64位windows上显式地将其设置为以32位模式运行,这导致了以下结果:

    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
        2
  •  1
  •   Community Marks    7 年前

    JShumaker's answer 解决这个问题。最好的方法似乎是调用以下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的需要-如果您不需要使用它,那么它的(相对)路径是不相关的。