He estado buscando como saber si eres administrador o no con vb6, he encontrado estas dos funciones, y en Windows XP, funcionan perfectas, pero en Windows 8 siempre me devuelve false
(En Windows 7 y Windows Vista no lo he probado)
Código
Option Explicit ' constantes '''''''''''''''''''''''''''''' 'Constantes para usar con OpenSCManager Private Const GENERIC_READ = &H80000000 Private Const GENERIC_WRITE = &H40000000 Private Const GENERIC_EXECUTE = &H20000000 ' declaraciones Api '''''''''''''''''''''''''''''' 'Función Api OpenSCManager Private 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 Private Declare Function CloseServiceHandle Lib "advapi32.dll" ( _ ByVal hSCObject As Long) As Long Private Sub Form_Load() 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 MsgBox "No es un Administrador", vbInformation Else CloseServiceHandle Admin MsgBox "Es un administrador", vbInformation End If End Sub
Código
Option Explicit 'Función Api IsNTAdmin Private Declare Function IsNTAdmin Lib "advpack.dll" ( _ ByVal dwReserved As Long, _ ByRef lpdwReserved As Long) As Long Private Sub Form_Load() MsgBox "Administrador de este equipo: ? " & _ CBool(IsNTAdmin(ByVal 0&, ByVal 0&)), vbInformation End Sub
Se puede mirar de otra manera? Es decir, alguna clave en el registro o con alguna otra funcion?
Espero que puedan ayudarme
Saludos