2017-05-09 198 views
-4

好吧,看看msdn关于windows服务。 我有一个myservice,我认为我的服务不会停止。我看看其他服务,如果你点击通过taskmgr停止服务,有一个窗口显示你有权控制它。我想要做到这一点,去做 ?有人在说什么?如何禁止停止windows服务

似乎窗口服务代码

static void ServiceHandler(DWORD dwCommand) 

void ServiceMain(int argc, wchar_t* argv[]) 

感谢ü大家。

我已经看过BuildExplicitAccessWithName API,但是:

BuildExplicitAccessWithName(&ea, TEXT("Administrator"), 
0, 
SET_ACCESS, NO_INHERITANCE); 

其没有达到我的效果。

+0

您无法阻止管理员停止服务。但是,您可以阻止有限的用户帐户这样做。停止服务需要“SERVICE_STOP”特权。 –

+0

谢谢你的回答.im不同意你的看法,因为我看着其他产品。当我点击菜单时拒绝服务停止。所以我认为如何通过编程来完成。 –

+0

为什么要阻止*管理员*能够停止服务? – mason

回答

0

如果服务希望接受停止请求,则在调用SetServiceStatus时,它必须在dwControlsAccepted字段中设置SERVICE_ACCEPT_STOP位。

如果服务确实不是希望接受停止请求,只需要设置该位。如果您愿意,您甚至可以实时更改是否接受停止请求。例如,您可能会在服务空闲时接受停止请求,但在忙时拒绝服务。

+0

对,这个设置可以达到我的想法。我找到了。但现在,用户可以杀死进程并使服务停止。我搜索了一些关于它的代码。 NTDLL。反映api。 RtlSetProcessIsCritical,你可以看到 –

+0

http://www.codeproject.com/Articles/43405/Protecting-Your-Process-with-RtlSetProcessIsCriti –

+0

但这个程序只在winxp中有效。 win7 havnt效果。 –