zxFortune, programador de tareas y seguridad (II)
Una de las últimas cosas que implementé en el programa fue la interactuación con las tareas programadas. Lo que en principio iba a ser una faena sencilla se convirtió en algo bastante complicado. Me explico.
La primera en la frente. El .NET 1.1 no tiene soporte directo para la gestión de tareas, como no lo tiene para otras muchas cosas, y en la versión 2.0, tampoco. Veremos cómo se las arregla Longhorn. La segunda, igual que la primera. La gestión de tareas operando directamente con el API de Win32 es toda una odisea, pues se realiza a través de COM y las realización es bastante complicada… Menos mal que en CodeProject alguien ya se había enfrentado al problema y había creado un conjunto de clases para .NET que convierten el infierno en el paraíso.
El creador es Dennos Austin, y la biblioteca se puede descargar de aquí. Te tienes que registrar para poder descargar, pero para leer el artículo no es necesario. La forma de trabajar con las tareas programadas es todo un placer con estos elementos; es tan sencillo que con echar un vistazo al código de ejemplo de la página es suficiente, así que no voy a decir nada más sobre el tema.
Cuestiones sobre seguridad
El siguiente problema una vez solucionado el tema del programador de tareas fue la seguridad. Si el programa se ejecuta como usuario restringido, es necesario que la tarea se programe como administrador para que pueda ser ejecutada globalmente, por lo que se debe introducir un usuario y una clave. Otra situación es que por políticas de grupo, el acceso al programador requiera también una cuenta.
Si mi programa ha de ser capaz de reprogramarse a sí mismo, ha de almacenar el citado usuario y su clave en algún lugar. Como no existe ningún método seguro para guardar eso, pues cada vez que el programa tenga que modificar el programador, se pedirán los datos de la cuenta. Algo de este tema se discutió en su momento aquí.
