macarthor
驱动牛犊
驱动牛犊
  • 注册日期2002-06-15
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望70点
  • 贡献值2点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1588回复:0

minifilter的service程序问题--在cmd中运行服务程序 可以启动服务吗?(StartServiceCtrlDispatch函数)

楼主#
更多 发布于:2010-03-19 14:23
最近在开发mini filter驱动,需要用到一个service的.exe

_tmain()中的部分参考代码如下:

else if (1 == argc) 
{ 
if (0 == isAdmin()) 
{ 
printf("Start Service - Must be run as an administrator to use this operation\n"); 
ReportError(TRUE, "Start Service - Must be run as an administrator to use this operation\n"); 
return -1; 
} 
printf("%s: StartServiceCtrlDispatcher to run.\n", __FUNCTION__); 
ReportError(FALSE, "%s: StartServiceCtrlDispatcher to run.\n", __FUNCTION__); 
StartServiceCtrlDispatcher(ServiceTable); 
return 0; 
}


其中,isAdmin和ReportError是我写的函数,isAdmin()判断是否具有Administrator权限,ReportError()将后边的内容写入到system event log中.

我在Service Management中手动启动这个服务,可以看到event log中有成功字样,而且service也处于了Started状态.

但是,如果我在具有admin权限的cmd中执行这个service .exe,虽然在console和event log都有成功的字样,但是在Service Management中该service并未启动(已按F5刷新了),而且Task Manager里也没有service .exe的进程.

请问这是怎么回事?
游客

返回顶部