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

标签 iis iis-6 metabase installscript adsutil.vbs

IIS 6 及更早版本附带一个名为 ADSUTIL.VBS 的实用程序脚本。 :

Adsutil.vbs is an IIS administration utility that uses Microsoft Visual Basic Scripting Edition (VBScript) with Active Directory Service Interfaces (ADSI) to manipulate the IIS configuration. This script should be run using CScript, which is installed with Windows Script Host.

换句话来说,这个工具可以让你改变IIS metabase从命令行以编程方式设置。

我想从 InstallShield 项目调用此工具,以便对 IIS 进行一些配置更改。我很好奇重新分发脚本是否合法(源代码中没有合法的措辞)或简单地通过以下方式启动命令:

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

并希望该脚本存在于磁盘上的该位置。

所以我的问题是 - 即使计算机上的某些其他网站(inetpub 根)位于非系统驱动器上,它是否始终存在于上面的路径中?似乎所有引用 ADSUTIL 工具的 MSDN 和其他 Microsoft 知识库文章都是通过使用上面的 %SYSTEMDRIVE% 路径来实现的。

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

也许有注册表项或其他方法来获取 Inetpub\AdminScripts 路径的位置?

也许我应该写一个 C# application that changes the valuemy own VBScript并使用我自己的小应用程序进行分发?

最佳答案

我最近遇到了类似的问题,并决定重新编写一小部分 vbscript,以便在 msi 安装程序中的自定义操作中使用。可能需要一些时间才能弄清楚 adsutil.vbs 的核心工作原理,但它写得非常好。例如,我需要将应用程序池切换为经典模式而不是集成模式,并显式地将其设置为在 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

关于iis - 如何找到C :\Inetpub\AdminScripts\ADSUTIL. VBS的相对路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1262921/

相关文章:

google-chrome - 表单例份验证 - 为每个请求执行的 loginUrl 页面(仅限 Chrome)

asp.net - 如何编辑 web.config 以停止为 .NET Web 应用程序的特定文件类型提供服务

asp.net - 在 iis 6.0 中更改 asp.net 版本

mysql - 使用 sql 查询将元数据库中预配置的时间戳从 utc 格式转换为 ist

key - 找不到配置数据库 key '/lm/w3svc'

mongodb - 在 mongodb 聚合框架中展开字典值

iis - dotnet 发布错误 : The process cannot access the file because it is being used by another process

asp.net - 默认情况下 ASP.NET 4.0 代码在哪个帐户中执行?

asp.net-mvc - 为 IIS6 设置正在 build 的页面

asp.net - 为什么我的 Web 应用程序出现延迟?