Imprimir página | Cerrar ventana

Saber si el usuario es administrador

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=86334
Fecha de impresión: 04/Julio/2022 a las 23:18


Tema: Saber si el usuario es administrador
Publicado por: Plinio Montano
Asunto: Saber si el usuario es administrador
Fecha de publicación: 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



Respuestas:
Publicado por: mounir
Fecha de publicación: 28/Abril/2022 a las 10:22
Hola!

Mira a ver si te sirve la https://docs.microsoft.com/es-es/office/vba/language/reference/user-interface-help/environ-function" rel="nofollow - función Environ

mas cosas sobre su uso
http://aulaclick-access.blogspot.com/2019/06/funcion-environ-en-access-variables-de.html" rel="nofollow - http://aulaclick-access.blogspot.com/2019/06/funcion-environ-en-access-variables-de.html

-------------
Un Saludo.


Publicado por: Plinio Montano
Fecha de publicación: 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


Publicado por: Plinio Montano
Fecha de publicación: 04/Mayo/2022 a las 06:27
Estimados colegas

Solicito se cierre este hilo.

Saludos cordiales.
Un gran abrazo


-------------
pmv


Publicado por: dokk
Fecha de publicación: 04/Mayo/2022 a las 13:24
¿Y cómo lo hiciste?

-------------
Albert Hostein
Aprendiendo cayendo


Publicado por: Plinio Montano
Fecha de publicación: 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


Publicado por: xavi
Fecha de publicación: 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

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: emiliove
Fecha de publicación: 13/Mayo/2022 a las 20:34
La Api IsUserAnAdmin creo que te va Xavi:
http://stackoverflow.com/questions/39212104/how-to-check-admin-privileges-in-vba" rel="nofollow - http://stackoverflow.com/questions/39212104/how-to-check-admin-privileges-in-vba

Saludos.


Publicado por: xavi
Fecha de publicación: 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:  https://www.vbforums.com/showthread.php?552464-RESOLVED-How-to-determine-if-user-is-administrator" rel="nofollow - [RESUELTO] ¿Cómo determinar si el usuario es administrador?-VBForums


-------------
Xavi, un minyó de Terrassa

http://www.llodax.com" rel="nofollow - Mi web



Imprimir página | Cerrar ventana