VC 创建NT服务程序

VC 创建NT服务程序

#include "Windows.h" 
#include "Winsvc.h" 
#include "time.h" 
#include "stdio.h" 
SERVICE_STATUS m_ServiceStatus; 
SERVICE_STATUS_HANDLE m_ServiceStatusHandle; 
BOOL bRunning=true; 
void WINAPI ServiceMain(DWORD argc, LPTSTR *argv); 
void WINAPI ServiceCtrlHandler(DWORD Opcode); 
BOOL InstallService(); 
BOOL DeleteService(); 
void DoTask() 
{ 
//    do something here; 
} 
void WINAPI ServiceMain(DWORD argc, LPTSTR *argv) 
{ 
//     DWORD status;  
//     DWORD specificError;  m_ServiceStatus.dwServiceType          = SERVICE_WIN32;  m_ServiceStatus.dwCurrentState         = SERVICE_START_PENDING;  m_ServiceStatus.dwControlsAccepted     = SERVICE_ACCEPT_STOP;  m_ServiceStatus.dwWin32ExitCode        = 0;  m_ServiceStatus.dwServiceSpecificExitCode = 0;  m_ServiceStatus.dwCheckPoint           = 0;  m_ServiceStatus.dwWaitHint             = 0;  
//m_ServiceStatus.dwServiceType     = SERVICE_AUTO_START; m_ServiceStatusHandle = RegisterServiceCtrlHandler("Service2",ServiceCtrlHandler);   if (m_ServiceStatusHandle == (SERVICE_STATUS_HANDLE)0)  {  return;  }      m_ServiceStatus.dwCurrentState         = SERVICE_RUNNING;  m_ServiceStatus.dwCheckPoint           = 0;  m_ServiceStatus.dwWaitHint             = 0;   if (!SetServiceStatus (m_ServiceStatusHandle, &m_ServiceStatus))  {  }  bRunning=true; 
while(bRunning) 
{    Sleep(3000); //Place Your Code for processing here....   DoTask(); //Sleep(60*1000); 
} return;  
} void WINAPI ServiceCtrlHandler(DWORD Opcode) 
{ switch(Opcode)  {  case SERVICE_CONTROL_PAUSE:  m_ServiceStatus.dwCurrentState = SERVICE_PAUSED;  break;  case SERVICE_CONTROL_CONTINUE:  m_ServiceStatus.dwCurrentState = SERVICE_RUNNING;  break;  case SERVICE_CONTROL_STOP:  m_ServiceStatus.dwWin32ExitCode = 0;  m_ServiceStatus.dwCurrentState    = SERVICE_STOPPED;     m_ServiceStatus.dwCheckPoint      = 0;  m_ServiceStatus.dwWaitHint        = 0;     SetServiceStatus (m_ServiceStatusHandle,&m_ServiceStatus); bRunning=false; break; case SERVICE_CONTROL_INTERROGATE:  break;  }       return;  
} 
BOOL InstallService() 
{ 
char strDir[1024]; 
HANDLE schSCManager,schService; 
GetCurrentDirectory(1024,strDir); 
strcat(strDir,"\\Debug\\servicetest.exe");  
schSCManager = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);   if (schSCManager == NULL)  return false; LPCTSTR lpszBinaryPathName=strDir; schService = CreateService((struct SC_HANDLE__ *)schSCManager,"Service2","MB Service",             // service name to display  SERVICE_ALL_ACCESS,          // desired access  SERVICE_WIN32_OWN_PROCESS, // service type  SERVICE_DEMAND_START,        // start type  SERVICE_ERROR_NORMAL,        // error control type  lpszBinaryPathName,          // service's binary  NULL,                        // no load ordering group  NULL,                        // no tag identifier  NULL,                        // no dependencies  NULL,                        // LocalSystem account  NULL);                       // no password  if (schService == NULL)  return false;   CloseServiceHandle((struct SC_HANDLE__ *)schService);  
return true; 
} BOOL DeleteService() 
{ 
HANDLE schSCManager; 
SC_HANDLE hService; 
schSCManager = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS); if (schSCManager == NULL)  return false;  
hService=OpenService((struct SC_HANDLE__ *)schSCManager,"Service2",SERVICE_ALL_ACCESS); 
if (hService == NULL)  return false; 
if(DeleteService(hService)==0) return false; 
if(CloseServiceHandle(hService)==0) return false; 
else return true; 
} int main(int argc, char* argv[]) 
{ 
if(argc>1) 
{ if(strcmp(argv[1],"-i")==0) { if(InstallService()) printf("\nMB Service Installed Sucessfully\n"); else printf("\nMB Service has been installed\n"); } else if(strcmp(argv[1],"-d")==0) { if(DeleteService()) printf("\nMB Service UnInstalled Sucessfully\n"); else printf("\nInstalled Easin Central Service Not Found\n"); } else { printf("\nUnknown Switch Usage\nFor Install use Servicetest -i\nFor UnInstall use Servicetest -d\n"); } 
} 
else 
{ SERVICE_TABLE_ENTRY DispatchTable[]={{"Service2",ServiceMain},{NULL,NULL}};   StartServiceCtrlDispatcher(DispatchTable);  
} 
return 0; 
}

转载于:https://www.cnblogs.com/mars9/archive/2011/08/30/2159318.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/495342.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安卓逆向_22( 二 ) --- Xposed 学习记录

转载:看雪论坛 堂前燕:https://bbs.pediy.com/thread-252153.htm Xposed 模块编写的那些事:https://www.freebuf.com/articles/terminal/114910.html 看了很多 xposed的教程,自以为掌握了个大概,直到今天整理&#xf…

最前线丨新零售结果、AT暗战,今年的618都讲了哪些故事

来源:36Kr今年的618成了巨头们验收新零售成果的好时机。618源于2010年,最初为京东店庆。2013年天猫加入618大促,苏宁、国美紧随其后。此后,618成为电商价格战的战场,也成为全网狂欢的节日。618今年已经走到底第9个年头…

什么是RUP

一、RUP产生的背景 UML能够用来为系统进行面向对象建模,但是并没有指定应用UML的过程,它仅仅是一种语言,它是独立于任何过程的。如果想要成功的应用UML一个好的过程是必要的。合理的过程能够有效的测度工作进度,控制和改善工作效率…

安卓逆向_24 ( 二 ) --- frida 学习记录

转载:看雪论坛 堂前燕 :https://bbs.pediy.com/thread-252319.htm apk 和 Python脚本 链接:https://pan.baidu.com/s/1KX1fY16NgaYB1FnCrpu0lQ 提取码:t38k 上次记录了下xposed hook java层的学习,这次记录下frid…

动态 | DeepMind 首次披露旗下专利申请情况

来源:AI科技评论摘要:作为一家顶尖的人工智能研究公司,DeepMind 近年来申请了一堆国际专利,但是具体到专利内容和申请数量就不得而知了。近日,DeepMind首次披露了一系列国际专利,这些专利涉及了现代机器学习…

JavaScript获取URL参数

文件1:realwall.js (function(window){var urltool {getUrlParameterByKey : function(url,key){var result "",start,parameterStr,len,paras,i;parameterStr url.split("?");if(parameterStr.length > 1){parameterStr parameterStr[…

Frida Android hook

From:https://eternalsakura13.com/2020/07/04/frida/ 开发环境配置 ( IDE 智能提示 frida ): 下载 nodejs: https://nodejs.org/zh-cn/download/npm install types/frida-gum 见过的较好的frida笔记: https://kevinspider.gith…

寒武纪宣布完成B轮融资 整体估值达25亿美元

来源:网易智能摘要:6月20日,芯片领域公司寒武纪宣布完成数亿美元的B轮融资,由中国国有资本风险投资基金、国新启迪、国投创业、国新资本联合领投。中金资本、中信证券投资&金石投资、TCL资本、中科院科技成果转化基金跟投。原…

安卓模拟器 Genymotion 安装

Form:https://www.runoob.com/w3cnote/android-tutorial-genymotion-install.html Linux (Ubuntu) 下的 Android 模拟器:Genymotion:https://blog.csdn.net/qq_25978793/article/details/49923579 Android 模拟器 Genymotion 安装使用教程详解…

辩论届人机大战:IBM新AI完胜人类冠军!

来源:智东西导语:6月18日,IBM的AI系统Project Debater首次与人类进行现场公开辩论。Project Debater能够理解对方观点,并有针对性地做出清晰的反驳,最终成功战胜人类辩手。6月19日消息,美国时间6月18日&…

没有人能阻止程序员将电脑上的一切搬到网页上

操作系统模拟(OS Simulator) Web QQ Q版的界面,看起来大体上是模拟Mac OS而不是Windows,不过那些桌面Widget又是Windows的展品。也算是取各家所长。使用他的唯一理由可能就是在没有QQ的电脑上用QQ吧 Windows 3.1 Windows 95(感谢大…

一篇文章带你领悟 Frida 的精髓(基于安卓8.1)

转载(一篇文章带你领悟Frida的精髓(基于安卓8.1)):https://www.freebuf.com/articles/system/190565.html 《Frida操作手册》:https://github.com/hookmaster/frida-all-in-one Frida github 地址&#x…

神经元之间是如何形成“社交网络”的

来源:中科院神经科学研究院摘要:我们的大脑中存在着亿万个神经元,在神经科学领域有一个非常重要的问题,就是一个神经元是如何在这亿万个神经元中选择与某一些神经元形成突触联系的。演讲者:中国科学院神经科学研究所徐…

WinForm 图片变灰方法

最近公司项目用到文件树,对于工程文件中不存在的文件,要给予灰色显示,如何让图片成灰色,在网上找了个效率较高的方法,很方便调用,故记录。 1 public Bitmap ExColorDepth(Image image) 2 { 3 …

《 FRIDA系列文章 》

转载:《FRIDA系列文章》github 地址:https://github.com/r0ysue/AndroidSecurityStudy 由 Frida 提供的很棒的 项目、库和工具的精选列表:https://github.com/dweinstein/awesome-frida 《Frida操作手册》:https://github.com/h…

毕马威:2018全球科技创新报告(附PDF下载)

来源:走向智能论坛摘要:日前,毕马威发布《2018全球科技创新报告》,报告显示,我们如今正处在一个科技创新爆发的时代,人工智能、机器人和物联网必将会影响全球的商业,那些不主动去抓住未来趋势的…

GWT(Google Web Tookit) Eclipse Plugin的zip下载地址(同时提供GWT Designer下载地址)

按照Eclipse Help->Install new software->....(这里是官方安装文档:http://code.google.com/intl/zh-CN/eclipse/docs/install-eclipse-3.6.html) 的方法安装失败,界面始终显示Pedding状态,很长时间都没反映,无奈之下&…

《卫报》长文解读机器的崛起:人类越来越无法掌控它们

来源:网易智能摘要:技术正开始以智能和不可预知的方式运作,连它的创造者都无法捉摸。正当机器越来越多地改变全球事件时,我们该如何重新控制它们呢?《卫报》网站今日撰文详述了机器的崛起。技术正开始以智能和不可预知…

Android 逆向分析大全

转载:Android 逆向分析大全:https://www.jianshu.com/p/a12d04fc748f 1. 概述 1.1 分析步骤 通用逆向分析步骤 1. 了解该模块正向编程相关方法2. 使用apktool解密apk,得到资源、jni模块等文件3. 从apk提取出dex文件,使用dex2jar转…

美国智库报告:自动驾驶对社会、经济与劳动力的影响

来源:资本实验室在过去几年中,从政府到企业,自动驾驶的开发和应用已经成为新的投入重点。自动驾驶汽车在道路安全、生产率、燃料消耗和自然环保等方面的预期进步也充分吸引了公众的想象力和注意力。SAFE(Securing America’s Futu…