2017-05-09 194 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效果。 –