安装与SC.exe或InstallUtil.exe的Windows服务 – 有区别,但哪个?

SC.exeInstallUtil都安装/卸载Windows服务。 但他们似乎并没有以同样的方式工作。

有什么不同?


例如InstallUtil失败(某些文件或依赖项未find错误),而SC创build愉快地安装服务。 太奇怪了 如果我在控制台中运行net start ,服务不会显示出来。 但它确实出现在服务GUI中。 当我尝试卸载时发生这种变化。

我自己写的服务和早期版本的工作。 Dotnet3.5。

是的,安装服务并不复杂。 只需要编写一些registry项。 您可以使用Regedit.exe进行查看,导航到HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services。

Sc.exe也可以使用提供的命令行参数来编写这些键。 不过,这不是正确的做法。 InstallUtil.exe的意义在于它可以激活自定义的安装代码。 服务作者编写的代码。 这并不罕见,服务往往会在自己的注册密钥中填充configuration信息以供自己使用。 当您使用Regedit查看时,您会看到很多证据。

我更喜欢sc.exe比installutil.exe多百万次。

InstallUtil强制你添加可怕的ProjectInstaller类(我相信),并在那里硬编码的服务名称和服务描述。

这使得很难将同一服务的两个版本同时运行在同一台机器上。

这就是为什么我根本不使用InstallUtil.exe。 还因为之前的回应:你需要它在你的部署包。 sc.exe已经在任何Windows XP和以上(我相信)。

主要区别在于InstallUtil不是用于服务安装的实用程序,而是作为一般安装程序工具。 从MSDN页面可以看到:

“安装程序工具是一个命令行实用程序,它允许您通过执行指定程序集中的安装程序组件来安装和卸载服务器资源。该工具与System.Configuration.Install命名空间中的类一起使用。

所以它可以安装服务,但有许多其他许多好处。 根据安装程序类创build可执行文件,使您可以对整个安装/卸载过程进行编程控制。 例如ServiceInstaller和ServiceProcessInstaller用于服务安装。

“Sc”实用程序用于服务控制,“创build”命令将根据所选的可执行文件创build服务。

在你的例子中
1.这并不意味着与InstallUtil一起安装,错误响应应该是相当清楚的。
2. InstallUtil由于安装代码中的错误而失败,使用sc create可能会为您创build错误的服务。 请查看{exe_name} .InstallLog以获取详细信息。

从卸载使用体验:Windows 7下的sc.exe立即从列表中删除条目,而使用installutil卸载后需要重新启动