PDA

Ver la Versión Completa : Chequear privilegios de administrador


miguel gomez
05-12-2006, 16:10:00
Hola amigos, a ver si alguien puede ayudarme. La verdad es que no sé si es este el foro adecuado (el de las API), si no es así, disculpadme.

El caso es que necesitaría implementar en Delphi un control como el que traen la mayoría de instaladores de manera que aparezca el mensajito ese de: "Debe conectarse como Administrador para instalar bla, bla bla".
O sea, de alguna manera averiguar si el usuario que está ejecutando el programa tiene privilegios de administrador (sería para Windows XP).

¿Alguien sabe cómo puedo hacer esto? ¿Existe alguna API para ello? ¿Sabe alguien cómo chequean eso los instaladores habituales (programas setup.exe)?

Muchas gracias por adelantado y un saludo,

-Miguel

seoane
05-12-2006, 17:27:54
Le estaba dando vueltas a tu pregunta y creo que no estas enfocando bien el problema. Tal como yo lo veo no es cuestión de saber si el usuario, es administrador, usuario limitado, usuario avanzado, etc ... porque aun sabiendo a que grupo pertenece el usuario no podríamos asegurar cuales son los derechos con los que cuenta. Podrían existir toda una serie de permisos especiales para ese usuario.

Yo lo que haría es comprobar uno a uno los privilegios que necesito. Esto se podría hacer al principio de la aplicación, y así determinar si nuestra aplicación se va a poder ejecutar en esa cuenta de usuario. Por ejemplo, nuestra aplicación tiene que tener acceso a cierta carpeta, pues probamos a acceder a ella, si además necesitamos instalar un servicio probamos a conectarnos al administrador de servicios y vemos que pasa. Una vez que comprobamos que tenemos acceso a todo, ya podemos seguir con nuestra aplicación o de lo contrario advertir al usuario que necesita una cuenta de usuario con mas privilegios, incluso podríamos indicarle el privilegio que falta, y puede que el administrador (si no lo es el) pueda concederle ese privilegio sin tener que cambiar las características de su cuenta.

Solo es una idea ¿que te parece?

Lepe
05-12-2006, 17:31:01
Innosetup es uno de esos creadores de instaladores, y lleva la siguiente característica:

[Setup]: PrivilegesRequired
Valid values:
none, poweruser, or admin
Default value:
none

Description:
This directive specifies the minimum user privileges required to run the installation. When set to poweruser or admin, Setup will give an error message at startup (e.g. "You must be logged in as an administrator when installing this program") if the user doesn't have at least Power User or administrative privileges, respectively. This only applies to Windows NT platforms.


Es preferible usar un instalador, en lugar de crear con delphi dicho programa.

Saludos

roman
05-12-2006, 18:54:45
Pero lo que dice seoane aplica igual para el Inno Setup, ¿qué no? Es decir, puede ser que alguine esté en el grupo de Power User, pero se le hayan personalizado sus derechos para algunas cosas. Bueno, lo supongo porque no manejo estas cosas realmente.

// Saludos

seoane
05-12-2006, 19:09:31
Un ejemplo de lo quiero decir es el siguiente. Muchas aplicaciones, sobre todo si tienen ya unos años, necesitan para instalarse, o incluso para ejecutarse, acceso al directorio "C:\Windows\Temp". Como muchos sabréis las cuentas de usuario limitadas no tienen acceso normalmente a este directorio, así que la aplicación falla. Si el administrador realmente esta interesado en que esta aplicación funcione, puede permitir el acceso, a ese directorio, a un usuario en concreto sin tener que convertirlo en administrador.

Creo que una aplicación amigable seria aquella que ante un fallo como el que describo nos mostrara algo así: "No puedo acceder al directorio C:\Windows\temp", indicándole al administrador que debe hacer para arreglar el asunto, y no mostrar algo tan abstracto como "Tienes que ser administrador", dejando al administrador en una situación difícil y obligándole a romperse la cabeza para solucionar el problema.

Es solo una opinión, de alguien que tuvo, como administrador, romperse la cabeza en su momento :D

miguel gomez
06-12-2006, 12:20:05
Gracias a Seoane y a los demás por sus ideas. Investigaré un poco más en esas direcciones. La verdad es que podría utilizar un instalador pero lo cierto es que quería por un lado saber cómo hacen los instaladores para darte ese mensaje de que no eres administrador y por otro implementarlo yo mismo desde Delphi.

Muchas gracias a todos.

Ya os contaré...

-Miguel