使用 Windows 命令提示符安装 Windows 服务?
Posted
技术标签:
【中文标题】使用 Windows 命令提示符安装 Windows 服务?【英文标题】:Install a Windows service using a Windows command prompt? 【发布时间】:2011-12-31 04:19:49 【问题描述】:我想使用 Windows 命令提示符(而不是 Visual Studio 命令提示符)安装 Windows 服务。
我该怎么做?
【问题讨论】:
【参考方案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】:
执行以下操作:
-
以管理员权限启动命令提示符 (CMD)。
输入
c:\windows\microsoft.net\framework\v4.0.30319\installutil.exe [your windows service path to exe]
按 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】:-
以管理员身份运行 Windows 命令提示符
粘贴此代码:
cd C:\Windows\Microsoft.NET\Framework\v4.0.30319\
以转到文件夹
编辑并运行它: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
并将其属性值Account
从User
更改为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】:-
以管理员权限启动命令提示符 (CMD)。
键入 c:\windows\microsoft.net\framework\v4.0.30319\installutil.exe [你的 Windows 服务路径到 exe]
按回车
【讨论】:
【参考方案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 服务时请遵循以下步骤,不要浪费时间:
以管理员权限运行命令提示符
在 IDE 中编译时确保发布模式
在设计视图中为您的项目安装程序指定一个类型
根据case选择认证类型
确保软件依赖关系:如果您使用的是证书,请正确安装它
去你的控制台写这个:
C:\Windows\Microsoft.NET\Framework\yourRecentVersion\installutil.exe c:\yourservice.exe
在exe路径-i c:\
之前有一个隐藏的-i参数,你可以使用-u
进行卸载
-
查看您的 .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
。
【讨论】:
以上是关于使用 Windows 命令提示符安装 Windows 服务?的主要内容,如果未能解决你的问题,请参考以下文章