VS2019如何创建Windows服务程序
一、新建服务项目
以上就构建了一个windows服务的项目,生成的解决方案包含两个项目:Monitor_Firewall、Monitor_FirewallPS,以下是两个项目的作用:
-
Services 项目: 这是主要的服务项目,它包含了实际的服务逻辑和功能。在这个项目中,你会编写服务的核心代码,包括服务的初始化、启动、停止等逻辑。你可以在这里定义服务的行为、处理逻辑、定时任务等。这个项目生成的可执行文件通常是实际运行的服务程序。
-
ServicesPS 项目: ServicesPS 是 PowerShell 脚本项目的缩写,它用于创建 PowerShell 脚本文件,这些脚本可以用来管理和控制 Services 项目中的服务。通常,ServicesPS 项目包含了一些 PowerShell 脚本文件,这些脚本可以用于安装、启动、停止、卸载服务等操作。通过这些脚本,你可以方便地管理服务的生命周期,而无需手动执行命令行操作。
总的来说,Services 项目包含了实际的服务逻辑,而 ServicesPS 项目则提供了一种更便捷的方式来管理和控制 Services 项目中的服务,尤其是通过 PowerShell 脚本来进行操作。这样的设计可以使服务的开发和管理变得更加灵活和可维护。
二、管理Windows服务的常用CMD命令
管理Windows服务的主要有两个:sc、net。
上述代码编译成功后会会生成一个exe文件:
1.创建服务
(1).sc create
:
在命令提示符中,使用 sc create
命令来创建一个新的服务。以下是基本的命令格式:
1 | sc create <service_name> binPath= "<path_to_executable>" |
运行CMD命令窗口,执行以下命令:
sc create Monitor_Firewall binpath= "D:\Work\Code\Monitor_Firewall\Debug\Monitor_Firewall.exe" type= own start= demand displayname= "Monitor_Firewall"
注意这里的格式,“=”后面是必须空一格的,否则会出现错误。
(2).sc query:
使用 sc query
命令可以列举出所有的Windows服务及其详细信息:
1 | sc query |
使用 sc query
命令后跟服务名来获取特定服务的详细信息:
1 | sc query <service_name> |
(3).sc start
:
使用 sc start
命令来启动一个服务:
sc start <service_name>
使用net启动一个服务
1 | net start <service_name> |
(4).sc stop
:
使用 sc stop
命令来停止一个服务:
1 | sc stop <service_name> |
使用net停止一个服务
1 | net stop <service_name> |
(5).暂停和继续服务:
使用 sc pause
命令可以暂停一个服务,使用 sc continue
命令可以继续(恢复)一个已暂停的服务。
sc pause <service_name> sc continue <service_name>
(6).sc delete
:
使用 sc delete
命令来删除一个已注册的服务。注意,这个操作是不可逆的,务必小心使用。
1 | sc delete <service_name> |
(7).sc config:
使用 sc config
命令可以修改服务的启动类型,包括自动启动、手动启动和禁用。
1 | sc config <service_name> start= <start_type> |
其中,<start_type>
可以是以下值之一:auto
、demand
、disabled
。
(8).sc命令的其他功能:
sc命令的所有功能以及帮助信息,可以在cmd命令窗口中直接输入sc即可
三、无COM接口Windows服务启动失败原因及解决方案
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?