SC.exe和InstallUtil都可以用于安装/卸载Windows服务。但它们似乎工作方式不同。
有何区别?
例如,当我使用InstallUtil时会失败(出现某些文件或依赖项未找到的错误),而Sc create则可以顺利安装该服务,但是如果我在控制台中运行net start,该服务将不会显示。不过在服务GUI中该服务确实会显示。
当我尝试卸载服务时也会发生类似的情况。
该服务是我自己编写的,早期版本可以正常工作,使用了Dotnet3.5。
SC.exe和InstallUtil都可以用于安装/卸载Windows服务。但它们似乎工作方式不同。
有何区别?
例如,当我使用InstallUtil时会失败(出现某些文件或依赖项未找到的错误),而Sc create则可以顺利安装该服务,但是如果我在控制台中运行net start,该服务将不会显示。不过在服务GUI中该服务确实会显示。
当我尝试卸载服务时也会发生类似的情况。
该服务是我自己编写的,早期版本可以正常工作,使用了Dotnet3.5。
是的,安装服务并不特别复杂。这只需要写入一些注册表键值。您可以使用 Regedit.exe 查看并可以导航到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services。
Sc.exe 也可以使用提供的命令行参数来编写这些键值。然而,这不是正确的做法。InstallUtil.exe 的用途在于它可以激活自定义安装代码。这是服务作者编写的代码。这并不罕见,服务往往会将配置信息放在其注册键中以供自己使用。当您使用Regedit查看时,会看到大量的证据。
我更喜欢使用sc.exe而不是installutil.exe。
使用InstallUtil强制你添加可怕的ProjectInstaller类,并在其中硬编码服务名称和服务描述。
使用InstallUtil非常难以在同一台机器上同时运行两个相同服务的不同版本。
这就是为什么我根本不使用InstallUtil.exe。还因为先前的响应:你需要将其包含在部署包中。sc.exe已经存在于任何Windows XP及以上版本中(我相信)。
myservice install
要比深入到特定文件夹以使用InstallUtil或键入大量参数以使用SC更容易。