el Guille, la Web del Visual Basic, C#, .NET y más...

Saber si la aplicación se está ejecutando como administrador (3)

Código para C# y Visual Basic usando solo clases de .NET Framework

 
Publicado el 22/Sep/2007
Actualizado el 22/Sep/2007
Autor: Guillermo 'guille' Som

Saber si nuestra aplicación se está ejecutando como administrador, y en caso de Windows Vista saber cuando se ejecute usando 'As Administrator'. Código tanto para Visual Basic como para C#. En el caso de VB, sin usar el objeto My.User.



 

Introducción:

Aquí tienes el código para saber si la aplicación se está ejecutando como administrador.

Anteriormente publiqué dos formas de hacer esto mismo.
En la primera, el código era válido tanto para Visual Basic como para C#.
En la segunda, el código solo era válido para Visual Basic 2005, ya que usaba el objeto My.User.

En esta tercera, el código que he usado es una especie de equivalencia del segundo, que es más simple.
Pero como C# no tiene el objeto My.User, aquí tienes el equivalente usando solo las clases de .NET Framework 2.0.

Y ya que he hecho la conversión para C#, pues te muestro también el código para Visual Basic 2005.

El código para Visual C# 2005:

// Otra forma de saber si se está ejecutando como administrador

// Hay que tener las importaciones a estos dos espacios de nombres:
using System.Security.Principal;
using System.Threading;

private bool EsAdministrador()
{
    Thread.GetDomain().SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);

    WindowsPrincipal myUser = (WindowsPrincipal)Thread.CurrentPrincipal;
    return myUser.IsInRole(WindowsBuiltInRole.Administrator);
}

 

El código para Visual Basic 2005:

' Otra forma de saber si se está ejecutando como administrador

' Hay que tener las importaciones a estos dos espacios de nombres:
Imports System.Threading
Imports System.Security.Principal

Private Function EsAdministrador() As Boolean

    Thread.GetDomain().SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal)

    Dim myUser As WindowsPrincipal = TryCast(Thread.CurrentPrincipal, WindowsPrincipal)
    Return myUser.IsInRole(WindowsBuiltInRole.Administrator)

End Function

 

Espero que te sea de utilidad y lo administres bien... ;-))).

Nos vemos.
Guillermo

 


Espacios de nombres usados en el código de este artículo:

System.Security.Principal
System.Threading


Código de ejemplo (comprimido):

No hay código comprimido, todo está en el artículo.


 


La fecha/hora en el servidor es: 22/11/2024 19:27:13

La fecha actual GMT (UTC) es: 

©Guillermo 'guille' Som, 1996-2024