【问题标题】:how to install multiple instance of same windows service如何安装同一Windows服务的多个实例
【发布时间】:2012-02-02 05:58:46
【问题描述】:

我创建了一个 windows 服务

它从网络配置文件中获取服务的名称。

我使用以下链接从 webconfig 获取价值。 http://www.codeproject.com/KB/dotnet/MultipleInstNetWinService.aspx

为了安装我的 Windows 服务,我只需单击图标并安装 再次,我更改配置文件中的值并重新构建我的应用程序。

我再次尝试安装,它显示错误,例如指定的服务已经存在。

如何安装同一个windows服务的多个实例?

谢谢, 普佳

【问题讨论】:

    标签: .net windows windows-services


    【解决方案1】:

    我需要这样做以快速演示使用不同参数运行的服务。

    我复制了包含服务 exe 的目录,然后使用sc create 命令设置了第二个服务。

    sc create "[NewServiceName]" binPath="[PathToCopiedServiceDirectory]"
    

    How to create a windows service using the Sc.exe command

    【讨论】:

    • 确保在 binPath 的 [PathToCopiedServiceDirectory] ​​值中包含实际的服务 EXE 文件名,否则服务将指向该目录,当您尝试时会收到“拒绝访问”错误启动服务。
    【解决方案2】:
    sc create MyService binPath= "MyService.exe" DisplayName= "MyService"  
    sc description MyService "My description"
    

    参考:http://support.microsoft.com/kb/251192

    按照标记的答案浪费了一个小时。使用 sc create 命令很简单

    【讨论】:

    • 确保在 binPath 和 DisplayName 中的 equals 和 value 后面留一个空格
    • 如果 MyService 引用中有空格,请使用引号,例如sc create "My Service" binPath= "MyService.exe" DisplayName= "MyService"
    【解决方案3】:

    您需要将您的服务可执行文件复制到一个单独的目录并使用 InstallUtil.exe 为其赋予不同的服务名称。

    听起来你错过了the linked article中的这个部分

    在命令提示符下,您需要使用 InstallUtil 来安装两者 您的服务的实例。有关如何使用 InstallUtil 的说明, 见Installer Tool (InstallUtil.exe)。一旦你完成安装 服务实例,你会有类似服务控制台的东西 上面的 Service Instance 1Service Instance 2 是从中创建的 相同的可执行文件,仅从不同的目录位置安装 使用不同的服务名称。

    【讨论】:

    • 我尝试使用命令 propemt 安装。它显示 installutil 没有重新编码内部或外部命令
    • 它是 .NET Framework 的一部分,在 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 中可用。
    • 我使用vs2010命令提示符并安装windows服务,它显示该服务已经存在。但我在配置文件中更改了服务名称。
    • 您是否从与第一个实例不同的目录安装服务?它必须在不同的目录中。希望对您有所帮助。
    • 您还应该查看下面@NaeemSarfraz 以及this issue 的答案,了解如何使用 sc 而不是 InstallUtil。
    【解决方案4】:

    我不得不在 Visual Studio 中更改文件“ProjectInstaller.Designer.cs”中的服务名称并重新编译。希望对您有所帮助。

    【讨论】:

    • 有点谦虚,因为答案真的应该是评论
    【解决方案5】:

    以管理员身份运行 asp.net 命令提示符,然后使用命令 - installutil "c:\abc\xyz.exe"。

    如果您的服务已经安装,那么您可以先使用以下命令卸载 - installutil \u "c:\abc\xyz.exe"

    【讨论】:

    • 这不是在回答问题。
    最近更新 更多