Se puede dar Privilegios de Administrador a un segmento de código en especifico?

Iniciado por **Aincrad**, 16 Mayo 2021, 20:15 PM

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

**Aincrad**

Hola, Como dice el titulo , quiero dar permisos de administrador a un segmento de código en especifico.

No se si esto es posible, tal vez se me ocurre de alguna forma, identificando la instancia de mi app a través del Handle. pero la verdad no se me ocurre como.

Investigando, no se si funcionaria CoCreateInstanceAsAdmin .

O alternativamente dar permisos de administrador, sin tener que cerrar la aplicacion. osea en tiempo de ejecución . no se si me explique.

Es posible ? gracias de antemano .




RayR

Hasta donde sé, no es posible. Al menos no sin tener que reiniciar la aplicación. Lo que se podría hacer es crear algún objeto COM y llamarlo con privilegios elevados, que debe ser a lo que te refieres con CoCreateInstanceAsAdmin, aunque tendrías que lidiar con toda la parafernalia e inconvenientes de COM. Otra opción sería crear un proceso que ejecute las tareas que requieran elevación de privilegios y llamarlo desde el primero, y comunicarlos usando alguno de los mecanismos IPC de Windows, como pipes o sockets.

**Aincrad**

Vale, bueno la verdad ya había pensado en crear una COM, o un ejecutable separado.

seria genial si se pudiera. al menos a mi me facilitaría muchas cosas.




rigorvzla

hola, no se si sea utl ya a este tiempo, pero lo que yo eh logrado es, realizar un modulo aparte osea, un proyecto aparte donde este se ejecute con los derechos de administrador y ejecute la tarea especificada.

A mi me resulto bien ya q mi aplicacion principal se ejecuta de manera normal , mas necesito ejecutar cierta tarea en administrador y lo llamo desde mi app princpial y todo de maravilla

**Aincrad**

Hola, gracias por responder.

La idea era hacerlo directamente en un solo ejecutable. y al final lo logre de la misma manera que lo hace ProcessHacker2.

Básicamente se ejecuta a si mismo mediante runas y con líneas de comandos sabe que función ejecutar.




RayR

Cita de: **Aincrad** en  4 Septiembre 2021, 21:23 PM
Hola, gracias por responder.

La idea era hacerlo directamente en un solo ejecutable. y al final lo logre de la misma manera que lo hace ProcessHacker2.

Básicamente se ejecuta a si mismo mediante runas y con líneas de comandos sabe que función ejecutar.

Pues esa es la forma tradicional de hacerlo, pero justamente implica lanzar un nuevo proceso, que pensé que era algo que no querías, así que supuse que ya la conocías pero buscabas otra manera. Imaginé que necesitarías comunicación hacia y desde la parte privilegiada, y de ahí lo que mencioné de IPC.

La alternativa del componente COM, aunque tiene sus inconvenientes, como todo, tiene la gran ventaja de que, aunque técnicamente el componente se ejecutaría en un proceso subrogado (por defecto, dllhost), COM se encarga de los detalles de la comunicación, por lo que uno se limita a llamar funciones, pasar parámetros y recibir resultados prácticamente de la misma manera en que lo haría con cualquier programa normal.

Pero sí, cuando sólo se necesita cosas más sencillas como ejecutar tareas más o menos independientes, la forma en que lo hiciste es la más simple y recomendable