** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Saber si el usuario es administrador
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Saber si el usuario es administrador

 Responder Responder
Autor
Mensaje
Plinio Montano Ver desplegable
Habitual
Habitual
Avatar

Unido: 10/Marzo/2015
Localización: Cuba
Estado: Sin conexión
Puntos: 90
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Plinio Montano Cita  ResponderRespuesta Enlace directo a este mensaje Tema: Saber si el usuario es administrador
    Enviado: 28/Abril/2022 a las 02:20
Estimados colegas mis deseos de salud para todos.

? Como podría saber con VBA en Access, si el usuario activo en Windows es un usuario administrador, es decir si pertenece al grupo de administradores de Windows ?

Saludos cordiales
pmv
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6351
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita mounir Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 28/Abril/2022 a las 10:22
Un Saludo.
Arriba
Plinio Montano Ver desplegable
Habitual
Habitual
Avatar

Unido: 10/Marzo/2015
Localización: Cuba
Estado: Sin conexión
Puntos: 90
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Plinio Montano Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 28/Abril/2022 a las 23:28
Gracias mounir, pero busque la función Environ  y no me sirvió para determinar la categoría del usuario activo en windows.
pmv
Arriba
Plinio Montano Ver desplegable
Habitual
Habitual
Avatar

Unido: 10/Marzo/2015
Localización: Cuba
Estado: Sin conexión
Puntos: 90
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Plinio Montano Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 04/Mayo/2022 a las 06:27
Estimados colegas

Solicito se cierre este hilo.

Saludos cordiales.
Un gran abrazo
pmv
Arriba
dokk Ver desplegable
Habitual
Habitual


Unido: 15/Mayo/2020
Localización: Hendaye
Estado: Sin conexión
Puntos: 135
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita dokk Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 04/Mayo/2022 a las 13:24
¿Y cómo lo hiciste?
Albert Hostein
Aprendiendo cayendo
Arriba
Plinio Montano Ver desplegable
Habitual
Habitual
Avatar

Unido: 10/Marzo/2015
Localización: Cuba
Estado: Sin conexión
Puntos: 90
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Plinio Montano Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 11/Mayo/2022 a las 19:27
Perdonen tuve algunas dificultades y he estados ausente, les pido disculpas.

El problema de saber si el usuario es administrador, lo resolví con el siguiente código, que en realidad lo que hace es decirme si el proceso Access está ejecutándose como administrador.

'Función Api OpenSCManager
Public Declare Function OpenSCManager Lib "advapi32.dll" Alias "OpenSCManagerA" ( _
                ByVal lpMachineName As String, _
                ByVal lpDatabaseName As String, _
                ByVal dwDesiredAccess As Long) As Long
              
'Función Api CloseServiceHandle
Public Declare Function CloseServiceHandle Lib "advapi32.dll" ( _
                ByVal hSCObject As Long) As Long


Public Function EsAdminPC() As Boolean
Dim Admin As Long
  
    Admin = OpenSCManager(vbNullString, _
                               vbNullString, _
                               GENERIC_READ Or GENERIC_WRITE Or GENERIC_EXECUTE)
  
    'Si la función retorna 0 no es Administrador
    If Admin = 0 Then
       EsAdminPC = False
    Else
        CloseServiceHandle Admin
       EsAdminPC = True
    End If
  
End Function


pmv
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14205
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita xavi Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 13/Mayo/2022 a las 12:43
Hola,

Me permito reabrir el tema porque he estado probando la función (siempre es interesante aprender cosas) y, en mi caso, no me aportaría la información deseable.

Al probar la función siempre me devuelvo Falso aunque el usuario, que no es administrador, si tiene privilegios de administrador de la máquina. ¿Te pasa lo mismo?

Por cierto, faltan los valores de las constantes. Los dejo aquí:

Const GENERIC_READ                  As Long = &H80000000
Const GENERIC_WRITE                 As Long = &H40000000
Const GENERIC_EXECUTE               As Long = &H20000000

Un saludo
Xavi, un minyó de Terrassa

Mi web
Arriba
emiliove Ver desplegable
Administrador
Administrador


Unido: 16/Junio/2009
Localización: Mexico
Estado: Sin conexión
Puntos: 5499
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita emiliove Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 13/Mayo/2022 a las 20:34
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14205
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita xavi Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 13/Mayo/2022 a las 21:29
Gracias Emilio. 

Efectivamente, con esa API sabemos si la aplicación se está ejecutando como Administrador.

En mi portatil mi perfil de usuario es de Administrador.
Cuando abro Excel "normal" y ejecuto esa función me devuelve FALSE
Cuando abro Excel "como administrador" me devuelve TRUE

No es aun perfecto pero se acerca. He visto otras cosas que tienen buena pinta pero que no acaban de funcionar: [RESUELTO] ¿Cómo determinar si el usuario es administrador?-VBForums
Xavi, un minyó de Terrassa

Mi web
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable