强制Windows在closures时等待服务停止

我有一个问题,我无法弄清楚我用C#编写的Windows服务。 我想要做的就是等待一个特定的时间,让一个subprocess终止,然后我被迫杀掉它并停止服务。 我已经设置了超时时间5到15秒,我的服务等待适当的时间,然后杀死孩子,当我通过mmc服务窗口停止时停止。 但是,如果我closures电脑,我的服务就会被吹走,然后才能够正常地等待和停止。 我已经读过Windows允许超时30秒的服务closures之前,它吹走了。 我的代码执行的时间less于30秒,最大值大约是20秒左右,这取决于我设置的超时时间。

我已经尝试在win32 Api中使用SetServiceStatus()函数,但它没有改变代码的function。 我已经validation函数调用成功。 有没有其他办法来强制Windows等待我的服务正常关机? 我正在testing它在Windows 7 x86和Windows Vista Sp1 x86。

Windows 不会让任何服务阻止关机,这是通过设计。 正如久里所说,你必须为你的应用考虑一个不同的设计。

这是一个全球Windows设置,显然: http : //support.microsoft.com/kb/305788 。 如果我不得不依靠用户关闭服务,我会担心的。 我会定期保存我的数据。

OnSTart和OnSTop是从一个基础类继承而来的,这对你来说确实有一些帮助。 你所有的这些方法的实现应该是启动或停止你的客户端代码,Windows将完成剩下的工作。

我会告诉这个事实,我使用C#和.Net的ServiceBase的实现做到这一点,我不能谈论C / C ++代码或API的权威性。