博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VC++使用服务做守护进程的示例(转载)
阅读量:6584 次
发布时间:2019-06-24

本文共 1351 字,大约阅读时间需要 4 分钟。

转载:

 

#define _WIN32_WINNT 0x502#define _CRT_SECURE_NO_WARNINGS#include 
#include
#include
#include
#include
#include
#include
static const char* const lpServiceName = "ProtectService";static SERVICE_STATUS_HANDLE hServiceStatus = NULL;static SERVICE_STATUS ServiceStatus = { 0};static char szCurDir[MAX_PATH+1] = { 0};static bool bRun = false;static HANDLE hProcess = NULL;static FILE* fLog = NULL;static std::ofstream ofs_log;bool InstallService();VOID WINAPI ServiceMain(DWORD dwArgc,LPTSTR *lpszArgv);VOID WINAPI HandlerFunc(DWORD dwControl);HANDLE RunAsLoggedUser(const char* lpPath,char* lpCmdLine);void WorkFunc();int main(int argc, char **argv){ GetModuleFileName(NULL,szCurDir,MAX_PATH); *strrchr(szCurDir,'\\') = '\0'; char szLogPath[MAX_PATH+1]; sprintf(szLogPath,"%s\\Service.log",szCurDir); fLog = fopen(szLogPath,"a+"); setvbuf(fLog,NULL,_IONBF,1024); ofs_log.open(szLogPath,std::ios::app); SERVICE_TABLE_ENTRY ServiceTable[2]; char szBuffer[30]; strcpy(szBuffer,lpServiceName); ServiceTable[0].lpServiceName = szBuffer; ServiceTable[0].lpServiceProc = (LPSERVICE_MAIN_FUNCTION)ServiceMain; ServiceTable[1].lpServiceName = NULL; ServiceTable[1].lpServiceProc = NULL; // 启动服务的控制分派机线程 if (!StartServiceCtrlDispatcher(ServiceTable)) { ofs_log<<"程序不是以服务方式启动"<

 

你可能感兴趣的文章
文件状态是否变化
查看>>
MongoDB的副本集Replica Set
查看>>
Maven项目中的配置文件找不到以及打包问题
查看>>
面向对象
查看>>
HDU 1058 Humble Numbers
查看>>
wps10.1中将txt转为excel
查看>>
解决执行脚本报syntax error: unexpected end of file或syntax error near unexpected token `fi'错误的问题...
查看>>
[BZOJ3312][USACO]不找零(状压DP)
查看>>
gtp转换mbr
查看>>
django rest framework
查看>>
poj1985 求树的直径
查看>>
Python PyPI中国镜像
查看>>
centos 设置静态IP
查看>>
[Angularjs]系列——学习与实践
查看>>
js -- canvas img 封装
查看>>
适配器模式(数据库方面)支持不同的数据库连接
查看>>
CF456B Fedya and Maths 找规律
查看>>
转载:Beginning WF 4.0翻译——第三章(流程图工作流)
查看>>
mysql alter table
查看>>
芯片测试
查看>>