首页 > 解决方案 > 具有不同名称的服务安装程序

问题描述

我正在使用下面的 cmd 代码来安装 Windows 服务

        @echo off
    :: BatchGotAdmin
    ::-------------------------------------
    REM  --> Check for permissions
    >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

    REM --> If error flag set, we do not have admin.
    if '%errorlevel%' NEQ '0' (
        echo Requesting administrative privileges...
        goto UACPrompt
    ) else ( goto gotAdmin )

    :UACPrompt
        echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
        set params = %*:"="
        echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"

        "%temp%\getadmin.vbs"
        del "%temp%\getadmin.vbs"
        exit /B

    :gotAdmin
        pushd "%CD%"
        CD /D "%~dp0"
    ::--------------------------------------

    ::ENTER YOUR CODE BELOW:
    cmd /k "C:\Windows\Microsoft.NET\Framework\v4.0.30319\installutil -i C:\fgbk\WindowsService\installer\OurIntegrationService.exe"

所以这会创建一个名为 OurIntegrationService 的服务,我想创建另一个具有不同名称 OurIntegrationServiceStage 的服务实例

我怎样才能做到这一点 ?

标签: c#windowsservicewindows-servicesinstallation

解决方案


ServiceName 向服务控制管理器标识服务。此属性的值必须与相应安装程序类的 ServiceInstaller.ServiceName 属性中记录的服务名称相同。在代码中,服务的 ServiceName 通常设置在可执行文件的 main() 函数中。

https://docs.microsoft.com/en-us/dotnet/api/system.serviceprocess.servicebase.servicename?view=netframework-4.7.2

要提供不同的名称,我建议您更改服务(如果您有代码)以从 app.config 或任何其他配置位置读取名称。

您还可以通过直接在注册表中更改显示名称(而不是服务名称)来更改它。


推荐阅读