Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: MeCraniDOS en 20 Febrero 2014, 12:08 pm



Título: [?] Saber si eres Administrador vb6
Publicado por: MeCraniDOS en 20 Febrero 2014, 12:08 pm
Buenas!  ;D

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
  1. Option Explicit  
  2.  
  3. ' constantes  
  4. ''''''''''''''''''''''''''''''  
  5.  
  6. 'Constantes para usar con OpenSCManager  
  7. Private Const GENERIC_READ = &H80000000  
  8. Private Const GENERIC_WRITE = &H40000000  
  9. Private Const GENERIC_EXECUTE = &H20000000  
  10.  
  11. ' declaraciones Api  
  12. ''''''''''''''''''''''''''''''  
  13.  
  14. 'Función Api OpenSCManager  
  15. Private Declare Function OpenSCManager Lib "advapi32.dll" Alias "OpenSCManagerA" ( _  
  16.    ByVal lpMachineName As String, _  
  17.    ByVal lpDatabaseName As String, _  
  18.    ByVal dwDesiredAccess As Long) As Long  
  19.  
  20. 'Función Api CloseServiceHandle  
  21. Private Declare Function CloseServiceHandle Lib "advapi32.dll" ( _  
  22.    ByVal hSCObject As Long) As Long  
  23.  
  24. Private Sub Form_Load()  
  25. Dim Admin As Long  
  26.  
  27.    Admin = OpenSCManager(vbNullString, _  
  28.                               vbNullString, _  
  29.                               GENERIC_READ Or GENERIC_WRITE Or GENERIC_EXECUTE)  
  30.  
  31.    'Si la función retorna 0 no es Administrador  
  32.    If Admin = 0 Then  
  33.        MsgBox "No es un Administrador", vbInformation  
  34.    Else  
  35.        CloseServiceHandle Admin  
  36.        MsgBox "Es un administrador", vbInformation  
  37.    End If  
  38.  
  39. End Sub

Código
  1. Option Explicit  
  2.  
  3.  
  4. 'Función Api IsNTAdmin  
  5. Private Declare Function IsNTAdmin Lib "advpack.dll" ( _  
  6.    ByVal dwReserved As Long, _  
  7.    ByRef lpdwReserved As Long) As Long  
  8.  
  9. Private Sub Form_Load()  
  10.    MsgBox "Administrador de este equipo: ? " & _  
  11.            CBool(IsNTAdmin(ByVal 0&, ByVal 0&)), vbInformation  
  12. 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