VC 如何创建服务???

来源:百度知道 编辑:UC知道 时间:2024/05/22 09:35:17

这是我前几天写的一个例子:我给你注释一下,如果还不懂,就加我:Q11(59)Q(59)903

// ProcApp.cpp : 定义控制台应用程序的入口点。
//
#pragma once

#include "stdafx.h"
#include <windows.h>
#include <winioctl.h>
//这是我自定义的类型,和你问和问题无关,你就把它当成一个类型就是了
typedef struct _CALL_BACK
{
HANDLE pParentId;
HANDLE pProcessId;
BOOLEAN bCreate;
}CALLBACKINFO,*PCALLBACKINFO;
//这个定义也和创建服务无关。你就把它当成一个常量吧
#define IOCTL_NTPROCDRV_GET_PROCINFO CTL_CODE(FILE_DEVICE_UNKNOWN,0x0800,METHOD_BUFFERED,FILE_READ_ACCESS|FILE_WRITE_ACCESS)

int _tmain(int argc, _TCHAR* argv[])
{

wchar_t szSymlName[]=L"slNTProcDrvYH";
wchar_t szDriverPath[MAX_PATH];
wchar_t *p;
::GetFullPathName(L"服务.sys",MAX_PATH,szDriverPath,&p);
//上面这个是得到服务的可执行文件路径,一个服务总有一个可执行文件的
//打开服务管理器,第一个参数是计算机名,本机就用NULL,第二个是数据库名
//默认数据库就用NULL,第三个是访问权限。这个API返回服务管理器句柄。
SC_HANDLE scm=OpenSCManager(NULL,NULL,SC_MANAGER_