Laburo España: 250.000 ofertas de empleo

Martes, 30 de marzo de 2004

Cambiar los privilegios de un proceso

A veces es necesario que un proceso Windows entre en un determinado círculo de amistades poderosas. Por ejemplo, si desea cambiar la hora.

Los sistemas originados en Windows NT manejan permisos y privilegios. Los permisos se aplican a entidades (objetos del Executive), y los privilegios son capacidades generales (actuar como parte del sistema operativo, obtener acceso crudo a dispositivos, modificar la hora del sistema, son algunos ejemplos).

La percepción general es que los procesos obtienen los privilegios que se han asignado al usuario. Que si hago doble clic sobre un icono, por ese acto le concedo mis poderes (cual una unción), tal como por ejemplo el de cambiar la hora del sistema.

Sin embargo, el asunto no es tan directo. El proceso, corriendo a mi nombre, cuando necesite hacer uso de un privilegio del sistema, ha de requerirlo. Lo hará con los siguientes pasos (cito al amigo Tomás Restrepo en su artículo):

1. Llamar a OpenProcessToken()
2. Usar LookupPrivilegeValue() para obtener un identificador local
3. Llamar a AdjustTokenPrivileges() para obtener el permiso (verificar el éxito, naturalmente)
4. Ejecutar la función que se necesite (por ejemplo SetSystemTime)
5. Llamar a AdjustTokenPrivileges() para devolver los privilegios que ya no se utilizarán
6. Cerrar el handle del token

Por: Ignacio Nicolás Rodríguez | Tecnología | Comentarios (0) | Referencias (0)

Comentarios

Comentar


Recordar datos

LaInformacion.com lainformacion.com - Medio Oficial de los Premios Bitacoras 2009