【问题标题】:Install a Windows service using a Windows command prompt?使用 Windows 命令提示符安装 Windows 服务?
【发布时间】:2011-12-31 04:19:49
【问题描述】:

我想使用 Windows 命令提示符(而不是 Visual Studio 命令提示符)安装 Windows 服务。

我该怎么做?

【问题讨论】:

    标签: c# windows-services command-prompt


    【解决方案1】:

    导航到 .net 文件夹中的 installutil.exe(例如,对于 .net 4,它是 C:\Windows\Microsoft.NET\Framework\v4.0.30319)并使用它来安装您的服务,如下所示:

    "C:\Windows\Microsoft.NET\Framework\v4.0.30319\installutil.exe" "c:\myservice.exe"
    

    【讨论】:

    • 如果是x64编译服务,使用“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\installutil.exe”。
    • 我收到一个奇怪的错误。没有具有 RunInstallerAttribute 的公共安装程序。 Yes 属性可以在 .exe 程序集中找到。删除 InstallState 文件,因为没有安装程序
    • 嗨,我尝试了这个解决方案,但它给出的异常是“...找不到文件或其依赖项之一”。请帮忙。
    • 'Framework' 和 'Framework64' 中的 installutil 有什么区别吗?
    • @Cataklysim 您必须使用完整路径,除非您将其添加到路径环境变量中。
    【解决方案2】:

    SC 创建命令没有错。 只是你需要知道正确的参数:

    SC CREATE "MySVC" binpath= "D:\Me\Services\MySVC\MySVC.exe"
    

    【讨论】:

    • 这是唯一引用官方方式来安装/修改/删除服务的答案。此外,这不依赖于正在安装的 .NET Framework,并且可以与任何类型的文件一起使用,而不仅仅是 .NET 二进制文件。
    • 是的..这就是为什么我喜欢这种方法并总是建议它,因为所有工作都需要在可以属于任何 .net fw 版本的 exe 中完成。
    • 注意“binpath=”后面的空格是必须的。 @ParamvirSinghKarwal
    • 如果使用 powershell 运行此命令,请注意 SC 是 Set-Content 的别名。编写 SC.exe 会解决这个问题。
    • 这不仅是唯一正确的答案,而且关于它仅适用于 Windows Server 的评论完全不正确。我希望@CaptainDashenka 将删除该评论,以免误导任何人。它至少在 Windows 10 专业版下是可用的,但您必须输入 sc.exe,因为 sc 是服务控制管理器,这完全是另一回事。文档在这里:docs.microsoft.com/en-us/windows-server/administration/…
    【解决方案3】:

    如果目录名称中包含c:\program files\abc 123 之类的空格,则必须在路径周围使用双引号。

    installutil.exe "c:\program files\abc 123\myservice.exe"
    

    如果你像下面这样设置一个 bat 文件,事情会变得更容易,

    例如要安装服务,请创建“myserviceinstaller.bat”和“以管理员身份运行

    @echo off
    cd C:\Windows\Microsoft.NET\Framework\v4.0.30319
    installutil.exe "C:\Services\myservice.exe"
    
    if ERRORLEVEL 1 goto error
    exit
    :error
    echo There was a problem
    pause
    

    卸载服务,

    只需在 installutil 命令中添加 -u

    cd C:\Windows\Microsoft.NET\Framework\v4.0.30319
    
    C:\Windows\Microsoft.NET\Framework\v4.0.30319\installutil.exe -u "C:\Services\myservice.exe"
    

    【讨论】:

    • 如果命令失败,InstallUtil 返回 -1。在这种情况下,您可以使用IF NOT '%ERRORLEVEL%' == '0' 检查错误级别。
    【解决方案4】:

    执行以下操作:

    1. 以管理员权限启动命令提示符 (CMD)。
    2. 输入c:\windows\microsoft.net\framework\v4.0.30319\installutil.exe [your windows service path to exe]
    3. return 就是这样!

    以管理员权限打开很重要,否则您可能会发现出现的错误没有意义。如果您有任何问题,请先检查您是否已使用管理员权限打开它!

    要以管理员权限打开,请右键单击“命令提示符”并选择“以管理员身份运行”。

    来源: http://coderamblings.wordpress.com/2012/07/24/how-to-install-a-windows-service-using-the-command-prompt/

    【讨论】:

      【解决方案5】:

      安装服务:-

      "C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe" 
      "C:\Services\myservice.exe"
      

      卸载服务:-

      "C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe" -u "C:\Services\myservice.Service.exe"
      

      【讨论】:

        【解决方案6】:

        在您的 Windows 服务 exe 文件旁边创建一个 *.bat 文件用于安装,并具有以下上下文:

        CLS
        ECHO Installing My Windows Service 
        
        START %windir%\Microsoft.NET\Framework\v4.0.30319\installutil.exe "%~d0%~p0\YourWindowsServiceExeName.exe"
        

        在您的 Windows 服务 exe 文件旁边创建一个 *.bat 文件用于卸载,并具有以下上下文:

        CLS
        ECHO Uninstalling My Windows Service 
        
        START %windir%\Microsoft.NET\Framework\v4.0.30319\installutil.exe -u "%~d0%~p0\YourWindowsServiceExeName.exe"
        

        以管理员身份运行每个bat 文件以安装或卸载您的 Windows 服务。

        【讨论】:

          【解决方案7】:

          我必须在这个帖子中再补充一点。要安装/卸载64-bit 版本的程序集,应使用64-bit 版本的工具。要安装服务,命令应该是:

          "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe"
          "C:\YourFolder\YourService.exe"
          

          卸载命令应该是:

          "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe" -u
          "C:\YourFolder\YourService.exe"
          

          【讨论】:

            【解决方案8】:
            1. 管理员身份运行 Windows 命令提示符
            2. 粘贴此代码:cd C:\Windows\Microsoft.NET\Framework\v4.0.30319\ 以转到文件夹
            3. 编辑并运行它:installutil C:\ProjectFolder\bin\Debug\MyProject.exe

            注意:要卸载:installutil /u C:\ProjectFolder\bin\Debug\MyProject.exe

            【讨论】:

              【解决方案9】:

              打开 Visual Studio 并通过在 Windows Desktop 选项卡中选择 Windows Service 模板来选择新项目。将以下代码复制到您的 service_name.cs 文件中。

              using System.Diagnostics;
              using System.ServiceProcess;
              namespace TimerService
              {
                  public partial class Timer_Service : ServiceBase
                  {
                      public Timer_Service()
                      {
                          InitializeComponent();
                      }
                      static void Main()
                      {
                          if (System.Diagnostics.Debugger.IsAttached)
                          {
                              Timer_Service service = new Timer_Service();
                              service.OnStart(null);
                          }
                          else
                          {
                              ServiceBase[] ServicesToRun;
                              ServicesToRun = new ServiceBase[]
                              {
                                  new Timer_Service()
                              };
                              ServiceBase.Run(ServicesToRun);
                          }
                      }
                      protected override void OnStart(string[] args)
                      {
                          EventLog.WriteEvent("Timer_Service", new EventInstance(0, 0, EventLogEntryType.Information), new string[] { "Service start successfully." });
                      }
                      protected override void OnStop()
                      {            
                          EventLog.WriteEvent("Timer_Service", new EventInstance(0, 0, EventLogEntryType.Information), new string[] { "Service stop successfully." });
                      }
                  }
              }
              

              右键单击 service_name.cs 文件并打开服务设计器。而不是右键单击并选择Add Installer。而不是右键单击serviceProcessInstaller1并将其属性值AccountUser更改为Local System

              Program.cs 文件中删除static void main 方法。 保存并构建您的项目。

              注意:转到项目文件夹的bin\Ddebug 文件夹。比打开您的service_name.exe 文件的属性。比转到Compatibility 选项卡。比点击Change Settings For All Users

              选择选项Run this program as an administrator

              现在,您必须以管理员身份打开 CommandPromt。 打开后,将目录设置为您的InstallUtil.exe 文件所在的位置。 例如:C:\Windows\Microsoft.NET\Framework64\v4.0.30319。 现在编写以下命令:

              C:\Windows\Microsoft.NET\Framework64\v4.0.30319>InstallUtil.exe -i C:\TimerService\TimerService\bin\Debug\TimerService.exe
              

              注意: -i 用于安装服务,-u 用于卸载。

              -i 设置后写入您要安装服务的路径。

              现在在 CommandPromt 中编写如下命令:

              C:\TimerService\TimerService\bin\Debug>net start service_name
              

              注意:使用stop 停止服务。

              现在,打开ViewEventLog.exe。选择 Windows 日志 > 应用程序。在那里您可以通过启动和停止服务来检查您的服务日志。

              【讨论】:

                【解决方案10】:

                如果您使用的是 Powershell 并且想要安装 .NET 服务,您可以使用 Install-Service 模块。它是 InstalUtil 工具的包装器。

                它公开了 3 个命令

                • Install-Service - 调用 InstallUtil.exe pathToExecutable 命令
                • Install-ServiceIfNotInstalled - 首先检查服务是否 如果不执行则安装Install-Service
                • Uninstall-Service- 卸载服务。可以使用可执行文件路径的ServiceName。

                这个模块的代码可以查看here

                【讨论】:

                  【解决方案11】:
                  1. 以管理员权限启动命令提示符 (CMD)。
                  2. 键入 c:\windows\microsoft.net\framework\v4.0.30319\installutil.exe [你的 Windows 服务路径到 exe]
                  3. 按回车

                  【讨论】:

                    【解决方案12】:

                    如下代码,安装卸载Service,

                    打开命令提示符并以管理员身份运行程序并触发以下命令并按回车键。

                    语法

                    安装

                    C:\windows\microsoft.net\framework\v4.0.30319>InstallUtil.exe + Your copied path + \your service name + .exe
                    

                    例如:我们的道路 InstallUtil.exe C:\MyFirstService\bin\Debug\MyFirstService.exe

                    卸载

                     C:\windows\microsoft.net\framework\v4.0.30319>InstallUtil.exe -u + Your copied path + \your service name + .exe
                    

                    例如:我们的路径 InstallUtil.exe -u C:\MyFirstService\bin\Debug\MyFirstService.exe

                    如需更多帮助,您可以查看以下链接:sample program

                    【讨论】:

                      【解决方案13】:

                      以管理员身份打开开发者命令提示符并导航到

                      cd C:\Windows\Microsoft.NET\Framework\v4.0.30319
                      

                      现在使用你的.exe 那里的路径

                      InstallUtil "D:\backup\WindowsService\WindowsService1\WindowsService1\obj\Debug\TestService.exe"
                      

                      【讨论】:

                        【解决方案14】:

                        当您的程序集版本和您的 Visual Studio 项目 Biuld 设置在 dot net 2 或 4 上安装时使用相同的版本。

                        安装与installutil相同版本的服务

                        如果在 dot net 4 中构建

                        输入c:\windows\microsoft.net\framework\v4.0.30319\installutil.exe

                        如果在 dot net 2 中构建

                        输入c:\windows\microsoft.net\framework\v2.0.11319\installutil.exe

                        【讨论】:

                          【解决方案15】:

                          1.从开始菜单中,选择 Visual Studio 目录,然后选择 Developer Command Prompt for VS。

                          2.Visual Studio 的开发者命令提示出现。

                          3.访问项目编译后的可执行文件所在目录。

                          4.在命令提示符下运行 InstallUtil.exe,并将项目的可执行文件作为参数

                          【讨论】:

                            【解决方案16】:

                            在部署 Windows 服务时请遵循以下步骤,不要浪费时间:

                            1. 以管理员权限运行命令提示符

                            2. 在 IDE 中编译时确保发布模式

                            3. 在设计视图中为您的项目安装程序指定一个类型

                            4. 根据case选择认证类型

                            5. 确保软件依赖关系:如果您使用的是证书,请正确安装它

                            6. 去你的控制台写这个:

                              C:\Windows\Microsoft.NET\Framework\yourRecentVersion\installutil.exe c:\yourservice.exe

                            在exe路径-i c:\之前有一个隐藏的-i参数,你可以使用-u进行卸载

                            1. 查看您的 .exe 路径以显示日志文件。您可以使用事件查看器observing in the feature

                            【讨论】:

                              【解决方案17】:

                              您可以使用 InstallUtil 安装任何 Windows 服务。 1:C:\Windows\Microsoft.NET\Framework64\v4.0.30319 在以管理员身份运行的命令提示符下。 2:复制Exe路径并输入InstallUtil.exe“你的exe路径” 然后回车。

                              如果你想要视觉上的阐述。转到下面的链接。 对我帮助很大。

                              https://youtu.be/yrdyYxzI7SE

                              【讨论】:

                                【解决方案18】:

                                您可以使用命令提示符并编写: C:\windows\microsoft.net\framework\v4.0.30319\InstallUtil.exe -i "窗口服务的.EXE文件"

                                【讨论】:

                                  【解决方案19】:

                                  你应该打开命令提示符,转到

                                  C:\windows\microsoft.net\framework\v4.0.30319\InstallUtil.exe -i ".EXE file of window service"

                                  【讨论】:

                                    【解决方案20】:

                                    以管理员身份打开命令提示符,转到 .exe 所在的文件夹。 将Exe 安装为服务

                                    D:\YourFolderName\YourExeName /i
                                    

                                    要卸载使用/u

                                    【讨论】:

                                      猜你喜欢
                                      • 1970-01-01
                                      • 1970-01-01
                                      • 2010-09-21
                                      • 2018-02-13
                                      • 1970-01-01
                                      • 1970-01-01
                                      • 2013-03-25
                                      • 2017-10-15
                                      • 1970-01-01
                                      相关资源
                                      最近更新 更多