Pregunta

¿Cómo puedo evitar que los usuarios manipulen, detener o estrellarse un servicio de Windows que está haciendo un trabajo en segundo plano que puede tomar un tiempo para completa?

Al recibir una solicitud de detención, el servicio debe esperar hasta que el trabajo se haya completado antes de detenerse.

No es la bandera CanStop para los servicios, pero no estoy seguro de cómo responder al mensaje OnStop. Y si el usuario trate de accidente el servicio, ¿cómo puedo evitar la manipulación más?


Editar:. pregunta generalizada del control paterno a cualquier proceso en segundo plano

¿Fue útil?

Solución

Los usuarios tienen que tener privs de administrador a los servicios de parada. Creo que no hay una manera infalible para proteger un programa de alguien que tiene admin en la caja. Si no desea que no son de confianza "usuarios" Detención del serivce, no se dé "usuarios no confiables" privs de administrador.

Parece que hay un poco de tropezar con este punto, por lo que quiero aclarar un poco. Supongamos que un administrador decide que quiere desinstalar el programa. Eso es normalmente sólo unos pocos clics del ratón. ¿Se va a tomar medidas para prevenir que?

Piense con cuidado acerca de su respuesta aquí. Cualquier programa que deliberadamente trata de evitar que la desinstalación de un administrador es por definición software malicioso .

Sé que ha sido más o menos habitual desde NT salió a dar todos los derechos de los usuarios administradores de PC domésticos, por lo que se puede instalar y jugar juegos a sus anchas. Sin embargo, eso no es realmente nessecary más con Vista y Win7, y la gente debe salir de ese hábito. Es una práctica de seguridad muy mal, incluso para un usuario "de confianza".

diciendo a sus usuarios que tienen que seguir algunas prácticas de seguridad en realidad no es una mala cosa. Ellos se encuentran con que tienen que limpiar mucho menos malware y virus fuera de sus máquinas de esa manera también.

Otros consejos

¿Cuál es tu modelo de amenazas ? Sin un modelo de amenaza, es imposible averiguar la forma correcta de pasar su esfuerzo.

Por el momento, vamos a considerar la prevención de un servicio se detenga, en lugar de la prevención o la manipulación o estrellarse.

T.E.D tiene razón al decir que si algún administrador quisiera detener el servicio, no debe normalmente tratar de evitar esto. De lo contrario, ¿cómo puede hacer el administrador aislamiento de fallos, iniciar Windows en modo de esqueleto, y así sucesivamente?

Como usted dice, la ServiceBase.CanStop propiedad se utiliza para prevenir la interrupción del servicio. Esta propiedad se utiliza normalmente sólo por los servicios del sistema operativo crítico que debe Ejecutar.

En el hilo principal de servicio, usted podría simplemente ignorar la OnStop evento y un bucle infinito. Por lo que el SMC que el servicio se detuvo, a pesar de que está aún en marcha. Esto es bastante desagradable, pero debería funcionar. El SMC se acaba de emitir una solicitud de parada, en realidad no forzar la parada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top