SC_HANDLE serviceControlManager = OpenSCManager(0, 0, SC_MANAGER_CREATE_SERVICE); //首先打开manager SC_HANDLE service = OpenService(serviceControlManager,serviceName, SERVICE_QUERY_STATUS); //然后打开服务,serviceName是服务名,不是可执行文件的名字 //SERVICE_QUERY_STATUS表示查询一个服务是否可用 //如果服务存在,返回非空 //好了,如果你要新建的服务不存在.进行下一步 SC_HANDLE service = CreateService(serviceControlManager, serviceName, //服务的名称,用于显示,或使用net start serviceName 打开服务 displayName, //对服务的说明 SERVICE_ALL_ACCESS, // 运行的权限 SERVICE_WIN32_OWN_PROCESS, //服务的类型,服务类型有驱动等....MSDN SERVICE_AUTO_START, //启动类型,这里是自己启动 SERVICE_ERROR_IGNORE, //错误处理方法 path,//可执行文件的路径 0, //name of load ordering group 0, //tag identifier 0, //array of dependency names 0, //account name 0);//account password //如果添加成功,就可以打开服务了 StartService(service,0,NULL); //关闭服务的句柄 CloseServiceHandle(service); //关闭SC_MANAGER的句柄 如果要删除服务可以使用下面的函数 //先打开服务,参数设置为 //SERVICE_QUERY_STATUS | SERVICE_STOP | DELETE OpenService //停止服务 stopService //删除服务 DeleteService