WIN32服务程序(一):创建服务

MSDN中有安装服务的例子Installing a Service(可点击进入),我们这里的创建服务,和MSDN里的例子基本上是一样的。这里做一些简单的说明:

打开控制面板,管理工具,服务。我们看到的集合了服务的界面也叫做服务控制管理器(SCM)。

用程序创建服务,首先要用OpenSCManager函数,建立一个到服务控制管理器的连接,并打开指定的数据库。将该函数的返回的指定服务控制管理器数据库的句柄传入CreateService函数。完成服务创建工作。最终的效果,程序运行之后,在服务控制管理器中,能看到我们创建的服务

程序代码如下:

 1 #include <windows.h>
 2 #include <winsvc.h>
 3 #include <stdio.h>
 4
 5 void InstallServices();
 6
 7 void main()
 8 {
 9 InstallServices();
10 }
11
12 void InstallServices()
13 {
14     char name[100];
15     char info[200];
16     char path[300];
17
18     printf("服务名称:");
19     gets(name);
20     printf("显示名称:");
21     gets(info);
22     printf("程序路径:");
23     gets(path);
24
25     SC_HANDLE manager = NULL;
26     SC_HANDLE service = NULL;
27
28     manager = OpenSCManager(NULL,NULL,SC_MANAGER_CREATE_SERVICE);
29
30     if(manager == NULL)
31     {
32         printf("error!\n");
33         return;
34     }
35
36     service = CreateService(manager,name,info,SERVICE_ALL_ACCESS,SERVICE_WIN32_OWN_PROCESS,
37                                 SERVICE_AUTO_START,SERVICE_ERROR_NORMAL,path,0,0,0,0,0);
38     if(service)
39         printf("Install Success!\n");
40     else
41         printf("Install Falid!\n");
42
43     CloseServiceHandle(service);
44     CloseServiceHandle(manager);
45 }

最后我们打开SCM看到我们建立的服务了

时间: 2024-10-01 03:41:28

WIN32服务程序(一):创建服务的相关文章

WIN32服务程序(三):完整的服务程序实例

前面我们所讲的“服务程序”,更准确地说是服务控制程序,例如我们通过输入应用的路径,将一个应用程序添加到服务控制管理器.一个服务控制程序可以将一个程序添加到服务控制管理器中,并控制它的运行.停止和删除等.那么怎么避免手动添加的方式,直接将我们想要运行的代码添加到服务中呢?这需要我们建立一个完整的服务程序,要同时包括服务主程序和服务控制程序. 关于服务主程序 服务主程序包括一个main函数作为程序的标准入口,一个ServiceMain函数作为服务程序的入口,一个Handler函数实现服务启动,停止等

Win32 SDK程序创建一些控件(简单调用InitCommonControlsEx,并指定ICC_LISTVIEW_CLASSES控件就可以了)

在Win32 SDK中创建一些控件的时候需要注意一下(具体是哪些控件请参看MSDN文档中列出来的) [cpp] view plain copy /* MSDN:Carries information used to load common control classes from the * dynamic-link library (DLL).This structure is used with the InitCommonControlsEx function. * 需要使用的结构体和函数

用delphi创建服务程式

视窗系统 2000/XP和2003等支持一种叫做"服务程式"的东西.程式作为服务启动有以下几个好处: (1)不用登陆进系统即可运行. (2)具有SYSTEM特权.所以你在进程管理器里面是无法结束他的. 笔者在2003年为一公司研发机顶盒项目的时候,原来写过课件上传和媒体服务,下面就介绍一下怎么用Delphi7创建一个Service程式. 运行Delphi7,选择菜单File-->New-->Other--->Service Application.将生成一个服务程式的

Android 创建服务(一)

Service是Android中四大组件之一,在Android开发中起到非常重要的作用,是一个没有用户界面的在后台运行执行耗时操作的应用组件. 通过startService()启动的服务处于“启动的”状态,一旦启动,service就在后台运行,即使启动它的组建被销毁,它还是处于运行状态. service可以在很多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放,比如检测SD卡上文件的变化,再或者在后台记录你地理信息位置的改变等等,总之服务总是藏在后

利用sc命令创建服务

创建 >sc create TestService binPath= "D:\EngineService\TestService.exe" start= auto[SC] CreateService 成功>net start TestService 注意:binPath= 后面有一个空格 删除 >sc delete TestService 利用sc命令创建服务,布布扣,bubuko.com

axis2五种创建服务方式的比较

AXIOM:Axis2 Object Model,Axis2对象模型 Axis2 对象模型(AXIs2 Object Model,AXIOM)是 Axis2 的基础,任何 SOAP 消息在 Axis2 中都表示为 AXIOM.AXIOM 相对于其他 XML 表示形式的优势在于,它基于 pull 解析器技术,而其他大多数则基于 push 解析器技术.pull 与 push 的主要不同之处在于,在 pull 技术中,调用者对解析器具有完全控制权,可以要求下一个事件:而对于 push,当要求解析器继续

java中socket创建服务端与客户端即时对聊

package tool; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; impo

Redis环境搭建、创建服务、搭建主从复制-Windows版本

一.搭建Redis环境 1.链接:http://pan.baidu.com/s/1boKAzzL 密码:sh2r 2.不赘述:执行redis-server.再执行redis-cli即可.redis环境就搭建完毕. 二.图形化界面 三.搭建主从复制 1.先给Master创建一个服务.解压的路径:F:\linux\redis\redis6379 cd f: cd \linux\redis\redis6379 //为master创建一个服务,每次机器启动自动启动. redis-server --ser

Win32 多线程的创建方法,区别和联系

Win32多线程的创建方法主要有: CreateThread() _beginthread()&&_beginthreadex() AfxBeginThread() CWinThread类 一.简介 CreateThread: Win32提供的创建线程的最基础的API,用于在主线程上创建一个线程.返回一个HANDLE句柄(内核对象).在内核对象使用完毕后,一般需要关闭,使用CloseHandle()函数. _beginthread()&&_beginthreadex():_