如何使用C#(或VB)安装IIS7?

如何使用C#(或VB)安装IIS7?,c#,iis-7,C#,Iis 7,我正在尝试以编程方式安装IIS7+。如果我在cmd提示符中直接运行它,它运行得很好 start /w pkgmgr /l:log.etw /iu:IIS-WebServerRole;IIS-WebServer;IIS-CommonHttpFeatures;IIS-StaticContent;IIS-DefaultDocument;IIS-DirectoryBrowsing;IIS-HttpErrors;IIS-HttpRedirect;IIS-ApplicationDevelopment;IIS

我正在尝试以编程方式安装IIS7+。如果我在cmd提示符中直接运行它,它运行得很好

start /w pkgmgr /l:log.etw /iu:IIS-WebServerRole;IIS-WebServer;IIS-CommonHttpFeatures;IIS-StaticContent;IIS-DefaultDocument;IIS-DirectoryBrowsing;IIS-HttpErrors;IIS-HttpRedirect;IIS-ApplicationDevelopment;IIS-ASPNET;IIS-NetFxExtensibility;IIS-ASP;IIS-CGI;IIS-ISAPIExtensions;IIS-ISAPIFilter;IIS-ServerSideIncludes;IIS-HealthAndDiagnostics;IIS-HttpLogging;IIS-LoggingLibraries;IIS-RequestMonitor;IIS-HttpTracing;IIS-CustomLogging;IIS-Security;IIS-BasicAuthentication;IIS-URLAuthorization;IIS-RequestFiltering;IIS-IPSecurity;IIS-Performance;IIS-HttpCompressionStatic;IIS-HttpCompressionDynamic;IIS-WebServerManagementTools;IIS-ManagementConsole;IIS-ManagementScriptingTools;IIS-ManagementService;IIS-IIS6ManagementCompatibility;IIS-Metabase;IIS-WMICompatibility;IIS-LegacyScripts;IIS-LegacySnapIn;WAS-WindowsActivationService;WAS-ProcessModel;WAS-NetFxEnvironment;WAS-ConfigurationAPI
由于开头的“开始”部分,我对如何运行it ServiceProcess.Process类有点困惑。我可以运行我所需要的任何其他exe,但pkgmgr.exe似乎无法正常运行

Using proc As New Process()
    proc.StartInfo.FileName = "c:\windows\system32\pkgmgr.exe"
    proc.StartInfo.Arguments = "/l:log.etw /iu:IIS-WebServerRole;IIS-WebServer;IIS-CommonHttpFeatures;IIS-StaticContent;IIS-DefaultDocument;IIS-DirectoryBrowsing;IIS-HttpErrors;IIS-HttpRedirect;IIS-ApplicationDevelopment;IIS-ASPNET;IIS-NetFxExtensibility;IIS-ASP;IIS-CGI;IIS-ISAPIExtensions;IIS-ISAPIFilter;IIS-ServerSideIncludes;IIS-HealthAndDiagnostics;IIS-HttpLogging;IIS-LoggingLibraries;IIS-RequestMonitor;IIS-HttpTracing;IIS-CustomLogging;IIS-Security;IIS-BasicAuthentication;IIS-URLAuthorization;IIS-RequestFiltering;IIS-IPSecurity;IIS-Performance;IIS-HttpCompressionStatic;IIS-HttpCompressionDynamic;IIS-WebServerManagementTools;IIS-ManagementConsole;IIS-ManagementScriptingTools;IIS-ManagementService;IIS-IIS6ManagementCompatibility;IIS-Metabase;IIS-WMICompatibility;IIS-LegacyScripts;IIS-LegacySnapIn;WAS-WindowsActivationService;WAS-ProcessModel;WAS-NetFxEnvironment;WAS-ConfigurationAPI"
    proc.Start()
    proc.WaitForExit()
End Using

我找到了这个值得信赖的链接

步骤1:PKGMGR.EXE概述

Vista/Windows Server 2008中的Windows可选功能是使用名为Pkgmgr的新命令工具安装的。使用pkgmgr.exe的命令行语法为:

Start /w pkgmgr.exe /iu:update1;update2… 
Pkgmgr.exe命令

/iu:{更新名称}; 这将按更新名称指定要安装的更新,并采用以分号分隔的要安装的更新名称

/uu:{updatename}; 这将指定要卸载的更新,并以分号分隔的列表列出要从系统中卸载的可选更新。必须至少指定一个更新名称

/n:{unattend XML} 这指定无人参与XML文件的文件名

有关XML文件的更多详细信息,请参阅MSDN文章


例如:

要仅安装IIS 7.0默认功能,请将以下unattend.xml文本复制到记事本中


我找到了这个值得信赖的链接

步骤1:PKGMGR.EXE概述

Vista/Windows Server 2008中的Windows可选功能是使用名为Pkgmgr的新命令工具安装的。使用pkgmgr.exe的命令行语法为:

Start /w pkgmgr.exe /iu:update1;update2… 
Pkgmgr.exe命令

/iu:{更新名称}; 这将按更新名称指定要安装的更新,并采用以分号分隔的要安装的更新名称

/uu:{updatename}; 这将指定要卸载的更新,并以分号分隔的列表列出要从系统中卸载的可选更新。必须至少指定一个更新名称

/n:{unattend XML} 这指定无人参与XML文件的文件名

有关XML文件的更多详细信息,请参阅MSDN文章


例如:

要仅安装IIS 7.0默认功能,请将以下unattend.xml文本复制到记事本中



你所说的“似乎玩得不好”是什么意思?你有错误吗?如果是,那是什么?为什么要从应用程序中安装它?通常情况下,您的应用程序没有执行此操作的正确权限,从安全角度来看,不建议执行此操作。@极客,这是一款企业软件,通常安装在全新的专用服务器上,我们的许多客户抱怨必须为我们的安装执行繁琐的配置。@Ek0nomik-不是没有,也没有错误,但除了我在一个简单的winform应用程序中以管理员身份运行的按钮单击事件中共享的代码之外,我没有做任何其他事情。我们必须对我们的软件包做同样的事情。设置它总是需要手动步骤。首先,对于IIS,你永远不应该只打开它,而不去管它。在启用该功能时,以及通过自己安装该功能时,应该考虑安全协议、配置等,这样您的客户机就容易遇到其环境中的潜在问题。最好让他们预先为您的软件的“依赖项”进行设置。您所说的“看起来不太好”是什么意思?你有错误吗?如果是,那是什么?为什么要从应用程序中安装它?通常情况下,您的应用程序没有执行此操作的正确权限,从安全角度来看,不建议执行此操作。@极客,这是一款企业软件,通常安装在全新的专用服务器上,我们的许多客户抱怨必须为我们的安装执行繁琐的配置。@Ek0nomik-不是没有,也没有错误,但除了我在一个简单的winform应用程序中以管理员身份运行的按钮单击事件中共享的代码之外,我没有做任何其他事情。我们必须对我们的软件包做同样的事情。设置它总是需要手动步骤。首先,对于IIS,你永远不应该只打开它,而不去管它。在启用该功能时,以及通过自己安装该功能时,应该考虑安全协议、配置等,这样您的客户机就容易遇到其环境中的潜在问题。最好让他们提前为您的软件的“依赖项”进行设置。是的,我也引用了这一点,但在C#app中似乎不起作用,而您在回答中没有引用它。正如我在文章中提到的,我可以在cmd提示符下很好地运行这段代码。它是从c#运行的,这就是问题所在。您是否以管理员身份运行c#应用程序?如果您正在调试-Visual Studio必须在管理模式下运行。是的,Visual Studio和应用程序以管理员身份运行。@RichC请遵循以下说明:是的,我也引用了这一点,但似乎无法从您在回答中未引用的C#应用程序中运行。正如我在文章中提到的,我可以在cmd提示符下很好地运行这段代码。它是从c#运行的,这就是问题所在。您是否以管理员身份运行c#应用程序?如果正在调试-Visual Studio必须在管理模式下运行。是的,Visual Studio和应用程序以管理员身份运行。@RichC请遵循以下步骤: