请我有一个需要运行IIS的应用程序,现在需要在Windows控制面板中手动打开IIS。但我想避免这个过程并自动打开IIS我该怎么做。谢谢
答案 0 :(得分:0)
IIS实现为Windows服务。因此,唯一需要确保将W3SVC的Startup type
设置为Automatic
。它默认设置为自动,因此您的问题意味着某人已将其更改为其他选项之一。
所以打开服务并寻找World Wide Web Publishing Service
。然后双击它,您将获得其属性。从Startup type
下拉菜单中选择Automatic
。重启你的电脑。 IIS将自动启动。
根据OP的评论,我假设有必要重新配置服务。
不幸的是,没有托管类可以更改服务启动类型。您可以通过P / Invoke调用本机Windows API。另一种选择是利用WMI。但最快的方法是从应用程序安装程序中生成特权cmd.exe
并运行以下命令:
sc config w3svc start=auto
但是,这不是一个防弹解决方案,因为其他人可能会在以后将其再次更改为demand
甚至disabled
。
如果您正在寻找在执行应用程序安装程序时启动服务的机制,您可能需要ServiceController
类。它可以启动服务但不能更改其启动类型。这是official documentation。
所以你可以在你的代码中做这样的事情:
using (var w3cvs = new ServiceController("W3Svc"))
{
if (w3cvs.Status == ServiceControllerStatus.Stopped)
{
w3cvs.Start();
}
}