2012-08-14 20 views
6

Estoy desarrollando una aplicación C# que necesita detectar si el usuario se está ejecutando como administrador elevado. Probé el solution sugerido por Steven.No se puede detectar si un usuario se está ejecutando con privilegios elevados, cuando no hay ventanas emergentes UAC

Comprobé la solución en 5 máquinas y funciona bien en 4 de ellas.

Hay una máquina que nunca muestra el mensaje de notificación de UAC, aunque configuré el Control de cuentas de usuario en Always notify me.

Al verificar el código en esa máquina, incluso si elijo run as administrator, no funciona y el método IsProcessElevated devuelve falso.

¿Hay algún problema con esa máquina específica?

¿Hay alguna manera de determinar si un usuario es elevado o no, en ese tipo de plataforma?

+0

Verificaría que las máquinas tengan todos los paquetes de servicio más recientes, etc., y luego lo intentaré de nuevo. –

+0

hay algunas soluciones alternativas para verificar el UAC [aquí] (http://stackoverflow.com/questions/95912/how-can-i-detect-if-my-process-is-running-uac-elevated-or-not) ¿Es posible probar uno de esos y ver si eso funciona? – Default

+1

Me parece que hay algún problema con esa computadora, no con el código. Debería recibir indicaciones de UAC si lo configura explícitamente para solicitarlo. Tu no eres. Eso apunta a un problema con el sistema en sí. –

Respuesta

10

Después de una investigación descubrí que desde Windows 7 y en el fin de determinar si un usuario es un administrador elevado o no sólo tiene que comprobar lo siguiente:

WindowsIdentity identity = WindowsIdentity.GetCurrent(); 
WindowsPrincipal principal = new WindowsPrincipal(identity); 
return principal.IsInRole (WindowsBuiltInRole.Administrator); 

(El resto del código que comprueba que el Token se puede usar en caso de que esta opción falle) Probé el código en algunas de las máquinas y funciona bien.

mi aplicación se ejecuta solo en win7 y superior por lo que esta solución es lo suficientemente buena para mí.

+1

+1 Buen trabajo. La pregunta a la que se vincula el OP me confundió un poco al escanearla, ya que tenía un título muy engañoso. –

+0

Este código funciona muy bien en Windows 8.1 también. – codechurn

0

Puede ser una tontería preguntar, pero después de cambiar el UAC para que siempre me avise, ¿ha reiniciado la máquina?

Tuve el mismo problema y el problema estaba en Windows mismo, ya que el estado del UAC no se cambia a menos que reinicie la máquina.

Pruébalo, y también marca this link y this.

Cuestiones relacionadas