sc.exe安装 两者都安装/卸载Windows服务。但是它们似乎并没有以相同的方式工作。

有什么区别?


例如 安装 失败(某些文件或依赖项未找到错误) SC创建 愉快地安装服务。也增加了陌生感;如果我运行,该服务不会显示 网络开始 在控制台。但是它确实出现在GUI服务中。当我尝试卸载时,这种变体就会发生。

我本人和更早的版本都撰写了服务。 dotnet3.5。

有帮助吗?

解决方案

是的,安装服务并不是特别复杂。它只需要写几个注册表键即可。您可以使用regedit.exe的look-Seee,导航到hkey_local_machine system currentControlset services。

SC.EXE也可以使用提供的命令行参数编写这些密钥。然而,这不是做到这一点的正确方法。 installutil.exe的点是它可以激活 风俗 安装代码。服务作者写的代码。这并不罕见,服务倾向于在其使用键中填写配置信息以供自己使用。当您与Regedit一起看时,您会看到很多证据。

其他提示

我更喜欢sc.exe,而不是installutil.exe百万次。

安装迫使您添加可怕的ProjectInstaller类(我相信)和在那里的服务名称和服务描述。

这使得很难将两个版本的同一服务的两个版本同时运行。

这就是为什么我根本不使用installutil.exe的原因。还因为以前的答复:您需要它在部署软件包中。 SC.EXE已经在任何Windows XP及以上(我相信)中。

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

“安装程序工具是一个命令行实用程序,可以通过在指定的汇编中执行安装程序组件来安装和卸载服务器资源。此工具与System.Configuration.configuration.insfiguration.install namespace中的类合作使用。”

因此,它可以安装服务,但还有许多其他好处。基于 安装程序类 为您提供对整个安装/卸载过程的程序控制。 ServiceInstallerServiceProcessInstaller, 例如,用于安装服务。

“ SC”实用程序用于服务控制,“创建”命令只会基于选定的可执行文件创建服务。

在您的示例中
1.它并不是要安装 安装 错误响应应该很清楚。
2. 安装 由于安装代码中的错误而失败,并使用 SC创建 可能会为您创建一个错误的服务。入住 {exe_name} .installlog 有关详细信息。

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

虽然installutil是.NET服务的首选方法,但它的缺点之一是,它不会从您的app.config拾取绑定的重定向,在某些情况下会导致安装失败。这就是使用SC可能会带来一些好处,而以安装时间无法运行代码为代价。

不幸的是,对于OP, 顶架 在他的问题时不存在。它可以围绕SC和installutil的缺点,并允许服务在Visual Studio中启动时附带的调试器启动。另外,输入要容易得多 myservice install 不需要钻到安装替代的特定文件夹,或为SC输入一吨参数。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top