我正在使用Inno Setup为ASP.net应用程序创建安装程序。我想有一个ComboBox与系统中的所有应用程序池。我找到了以下部分代码来获取所有应用程序池:
IIS := CreateOleObject('IISNamespace');
appPools := IIS.GetObject('IIsApplicationPools', 'localhost/W3SVC/AppPools');
我也找到了如何获得单个特定应用程序池,但我无法弄清楚如何遍历这个appPools。
答案 0 :(得分:0)
我找到了解决方案。它需要使用名为WMI的外部包。它可以从http://www.vincenzo.net/isxkb/index.php?title=WMI下载。 Heere是一个完整的代码:
appPools := IIS.GetObject('IIsApplicationPools', 'localhost/W3SVC/AppPools');
IISPoolIndex := 1;
WebSite := IIS.GetObject('IIsWebService', 'localhost' + '/w3svc');
// GetObject structure: Schema, NextName of data
tVariants := ComEnumerate(WebSite.GetObject('IIsApplicationPools', 'AppPools'));
For i := 0 to GetArrayLength (tVariants) - 1 do
begin
// ComboBox with Application Pool Names
AppPoolsComboBox.Items.Add(tVariants[i].Name);
end;