Microsoft Windows 服务,可以创建长时间运行的可执行应用程序,在Windows 会话中运行。 这些服务可以自动启动,启动计算机后,可以暂停和重新启动,并且不显示任何用户界面。 这些功能使服务最适用于在服务器上或需要在不干扰其他工作的用户情况下,可以在同一台计算机上的长时间运行的功能。 还可以在不同的特定用户帐户或默认计算机帐户的安全上下文中运行服务。
很多时候我们写了一些bat文件,希望能开机自动启动。 例如我们把XX搭建在Win机器上,希望我们机器启动后我们的XX相关的服务就能自动启起来。只要有用户登录win机器,bat文件就自动启动起来。但是得有用户登录上才能自动启起来,所以急需服务化。
开始->运行->services.msc->回车,就可以打开服务管理窗口了。
sc命令操作服务
命令行操作:
设置服务为自动,手动等启用方式:
sc config dot3svc start= demand (start后面不能有空格,等号后面一定要有一个空格 , 否则命令语法错误)
----------------------------------
sc config hlep
----------------------------------
sc config 服务名 start= AUTO (自动)
sc config 服务名 start= DEMAND (手动)
sc config 服务名 start= DISABLED(禁用)
注意:等号后面必须有一个空格。
————————————————
在 "开始->运行->cmd" 中输入命令,操作服务
1、启动服务
net start dot3svc
2、停止服务
net stop dot3svc
3、删除服务 卸载服务
sc delete TEST
SC描述
SC 是用于与服务控制管理器和服务进行通信的命令行程序。
用法:
sc <server> [command] [service name] <option1> <option2>...
选项 <server> 的格式为 "\\ServerName"
键入 "sc [command]" 可以获得有关命令的进一步帮助
命令:
query-----------查询服务的状态, 或枚举服务类型的状态。
queryex---------查询服务的扩展状态, 或枚举服务类型的状态。
start-----------启动服务。
pause-----------向服务发送 PAUSE 控制请求。
interrogate-----向服务发送 INTERROGATE 控制请求。
continue--------向服务发送 CONTINUE 控制请求。
stop------------向服务发送 STOP 请求。
config----------更改服务的配置(永久)。
description-----更改服务的描述。
failure---------更改服务失败时执行的操作。
failureflag-----更改服务的失败操作标志。
sidtype---------更改服务的服务 SID 类型。
privs-----------更改服务的所需权限。
qc--------------查询服务的配置信息。
qdescription----查询服务的描述。
qfailure--------查询失败时服务执行的操作。
qfailureflag----查询服务的失败操作标志。
qsidtype--------查询服务的服务 SID 类型。
qprivs----------查询服务的所需权限。
delete----------(从注册表)删除服务。
create----------创建服务(将其添加到注册表)。
control---------向服务发送控制。
sdshow----------显示服务的安全描述符。
sdset-----------设置服务的安全描述符。
showsid---------显示相应于假定名称的 SID 字符串。
GetDisplayName--获取服务的 DisplayName。
GetKeyName------获取服务的 ServiceKeyName。
EnumDepend------枚举服务的依存关系。
示例:
sc start MyService
----------------------------------
实际上sc所完成的功能就是“控制面板.管理工具”中看到的“服务”完成的功能。
用注册表添加服务
注册表手动添加Windows服务
修改注册表
在注册表编辑器,展开分支"HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services",在右侧窗格中显示的就是本机安装的服务项。如果要新建服务,只须点击"编辑→新建→项" ,然后为此项命名,如"test";然后右击该项,选择"新建→字符串值"或"新建→Dword值"即可。添加一个服务项目具体需要添加的键值如下: "DisplayName",字符串值,对应服务名称;
"Description",字符串值,对应服务描述;
"ImagePath",字符串值,对应该服务程序所在的路径;
"ObjectName",字符串值,值为"LocalSystem",表示本地登录;
"ErrorControl",Dword值,值为"1";
"Start",Dword值,值为2表示自动运行,值为3表示手动运行,值为4表示禁止;
"Type",Dword值,应用程序对应10,其它对应20。
另外,还要在"test"项下新建一个"Enum"项。如果有些必须通过srvany来加载的还必须 添加另外的Parameters子项在该项中提供详细的要加为服务的程序所在的路径。而上面的那个 路径就需要指到srvany所在的路径。
删除服务
用sc.exe这个Windows命令,执行命令 sc delete "服务名" (如果服务名中间有空格,就需要前后加引号)
如: sc delete mysql
用管理员的身份运行cmd窗口,输入命令sc delete ServiceName,回车
C:\Windows\system32>sc delete tvnserver
[SC] DeleteService 失败 1072:
出现1072的错误。 需要在删除服务前要做几个清理工作。确保:
1、确保服务已停止:net stop " ServiceName"
2、确保服务控制面板已关闭:确保关闭服务services.msc窗口。" mmc.exe" 进程不存在("服务"列表窗口): taskkill / F / IM mmc.exe
3、并且服务未打开任何文件句柄。还要确保ProcessExplorer没有运行。
才能执行删除服务命令:sc delete " ServiceName"
C:\server>sc delete"ServiceName"
[SC] DeleteService SUCCESS
现在,如果执行另一个sc命令,将得到以下信息:
C:\server>sc delete"ServiceName"
[SC] OpenService FAILED 1060:
The specified service does not exist as an installed service.
但不是1072错误消息
直接编辑注册表
打开注册表编辑器,找到键值:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
服务会以相同的名字在这里显示一个主健,直接删除相关的键值便可。