请问这是怎么回事?_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的进程.

慕容森
浏览 116回答 1
1回答

呼唤远方

有的是有参数的,有的是无参数的,运行服务程序后服务就打开的了是无参数的那种,你可以打开服务-然后在服务名称上点右键-属性-可执行文件的路径,就可以看见有参数了~~~  我也试过运行服务程序打开服务这种,你自己试试吧~ 呵呵。messenger 这个服务就是有参数的,你可以打开它的服务属性看看:C:\WINDOWS\system32\svchost.exe -k netsvcstelnet 这个服务就没参数呀~C:\WINDOWS\system32\tlntsvr.exe你可以加上参数试试看~~    如果不行的话就用net命令开服务吧~~ 呵呵!
打开App,查看更多内容
随时随地看视频慕课网APP