Windows Service 要注意的几点

http://msdn.microsoft.com/en-us/library/bb540475(v=VS.85).aspx

1.程序类型:Win32 Console Application

2.几个主要的函数类型

VOID WINAPI SvcCtrlHandler( DWORD );

VOID WINAPI SvcMain( DWORD, LPTSTR * );

void __cdecl _tmain(int argc, TCHAR *argv[])

如果函数据类型不对,有可能在你停止service时随机收到0x00000000指令读取0x00000000地址非法的错误。

3. service 的安装类型

SC_HANDLE  schService= CreateService(

                              schSCManager,              // SCManager database

                              pszSvcName,              // name of service

                              pszDisplayName,           // service name to display

                              SERVICE_ALL_ACCESS,        // desired access

                              SERVICE_WIN32_OWN_PROCESS|SERVICE_INTERACTIVE_PROCESS, // service type

                              SERVICE_AUTO_START,      // start type

                              SERVICE_ERROR_IGNORE,      // error control type

                              pszPathName,        // service's binary

                              NULL,                      // no load ordering group

                              NULL,                      // no tag identifier

                              NULL,                      // no dependencies

                              NULL,                      // LocalSystem account

                              NULL);                     // no password

如果要和系统有键盘消息则需要SERVICE_INTERACTIVE_PROCESS。

像发送Ctrl+Alt+Del消息

keybd_event(VK_CONTROL,MapVirtualKey(VK_CONTROL,0),0,0); 

               keybd_event(VK_MENU,MapVirtualKey(VK_MENU,0),0,0); 

               keybd_event(VK_DELETE,MapVirtualKey(VK_DELETE,0),0,0); 

 

               keybd_event(VK_CONTROL,MapVirtualKey(VK_CONTROL,0),KEYEVENTF_KEYUP,0);

               keybd_event(VK_MENU,MapVirtualKey(VK_MENU,0),KEYEVENTF_KEYUP,0);

               keybd_event(VK_DELETE,MapVirtualKey(VK_DELETE,0),KEYEVENTF_KEYUP,0);

 

4.如何调试service.

Service 是一个exe程序。当启动时可以在taskmgr中看到。StartServiceCtrlDispatcher函数将会阻塞,直到用户在services.msc中停止service.

调试方法如下:

在services.msc中启动service, 然后attach到这个进程上进行调试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值