Que es user32 y kernel32¿? que diferencias existen?

Iniciado por Borito30, 23 Marzo 2017, 20:26 PM

0 Miembros y 1 Visitante están viendo este tema.

Borito30

Se que son  bibliotecas de enlace dinámico que implementa la biblioteca de windows pero mi pregunta es cuando uno esta usando la librería kernel32 o user32 cuando uno es administrador usa kernel32 o cuando uno usa user32 esta en modo usuario¿? Soy un total ingnorante al respecto por lo que cualquier explicacion me vendría bastante bien. Gracias.
Estoy en contra del foro libre y la Sección de juegos y consolas (distraen al personal)

Serapis

En Windows, la descripción de la librería indica su cometido (si se es coherente, claro):

Kernell32.dll: Windows NT BASE API Client DLL
User32.dll: Windows XP USER API Client DLL

Luego un vistazo a las funciones públicas de cada librería revela mejor su destino, aunque claro, si alguien no sabe que son esas librerías, los nombres d elas funciones quizás también le dejen en la misma situación.

de un modo sencillo, digamos que kernell33.dll tiene funciones de bajo niuvel del sistema operativo, manejo de la memoria, de las tareas, de los recursos y funciones que las interrelacionan... en cambio User32.dll, tiene funciones de comunicaciones, temporizadores, menús, mensajes, cursores, manejo de ventanas...
En resumen, tienen diferentes funcionalidades...

Borito30

Muchas gracias por tu respuesta me explique tan rapido que se me paso mencionar ese detalle se que kernel32 es para funciones de bajo nivel del sistema operativo pero mi pregunta es las aplicaciones que usa el usuario por ejemplo supongamos la calculadora si arranca con permisos de administrador o no el kernel32  influye en algo??????
Estoy en contra del foro libre y la Sección de juegos y consolas (distraen al personal)

Serapis

#3
No. En windows, prácticamente ninguna librería (*) influye en el tipo de usuario que corre en el equipo. Todas las librerías registradas en windows (en la base de datos conocida como 'el registro de windows') están disponibles para cualquier programa sea cual sea el tipo de usuario.

Ciertamente hay alguna librería relacionada con los tipos de cuentas (usuarios), pero son las librerías referidas a la seguridad, y son las que el S.O. corre y que se encarga de verificar si un usuario tiene permisos para acceder por ejemplo a la impresora. En general incluso User32.dll y Kernel32.dll, tendrán funciones de ese tipo, pero esas funciones no suelen estar documentadas y por lo mismo suelen ser privadas... ...pero NO hay librerías especificas que en base al tipo de cuenta determine que un programa deba usar esta o aquella librería. No hay librerías implementadas para un tipo de cuenta u otro.

Me extiendo con tu ejemplo, así creo que te quedará más claro:
Si un programa que por ejemplo sea esa calculadora, requiere usar x función de kernel32.dll, y pongamos que el usuario es administrador, si dicha función por su implicación requiere permisos de administrador, en el momento en que se invoque a la función, se verifica si el usuario tiene permisos suficientes, en caso afirmativo, la función se ejecuta en caso negativo, soltará un error de seguridad, dirá algo así como que los atributos de seguridad son insuficientes o el más genérico que señala que el usuario no tiene suficnetes privilegios para ejecutar "lo que sea". Pero tanto el administrador como un usuario sin privilegios, podrán usar la calculadora normalmente y seguramente cuando se invoque la función que verifique que el usuario no tiene privilegios, salte el error y la aplicación quede a la espera, se bloquee, o se cierre, según lo que el programador de la calculadora haya colocado como código para detectar el error o no, tras la devolución a la llamada de dicha función... de hecho es común que las funciones (públicas, que los programadores pueden invocar y) que requerien privilegios incluyan un parámetros de atributos de seguridad (SA, Security_Attributes).