Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-11-2008
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Cool Como saber si el usuario logueado tiene permisos administrativos

Hola a todos
Quiero para autenticarse en mi programa, usar los mismos usuarios de windows, pero solo podra hacer cambios el que tenga permisos administrativos, un usuario estandar tendra derechos de solo lectura.

El problema está en como identificar los derechos de cada usuario, es decir a que Grupo pertenece (Administradores, Usuario Avanzado, Invitado, etc.).
Tambien como saber todos los usuarios declarados, se como obtener el usuario actualmente logueado, pero los demas como seria?

De que forma puedo hacerlo con mi programa delphi?
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes

Última edición por JoAnCa fecha: 04-11-2008 a las 17:49:16.
Responder Con Cita
  #2  
Antiguo 04-11-2008
kalisto kalisto is offline
Miembro
 
Registrado: jul 2004
Posts: 62
Poder: 20
kalisto Va por buen camino
Los nombres de usuario los puedes obtener mediante la función NetUserEnum. y la misma funcion tambien nos dice los privelegios del mismo administrador, invitado, o usuario.
Responder Con Cita
  #3  
Antiguo 04-11-2008
kalisto kalisto is offline
Miembro
 
Registrado: jul 2004
Posts: 62
Poder: 20
kalisto Va por buen camino
Con este codigo puedes averiguar si el usuario logeado es admin.
Código Delphi [-]
unit WindowsUser; interface uses Windows; //returns True if the currently logged Windows user has Administrator rights function IsWindowsAdmin: Boolean; implementation const SECURITY_NT_AUTHORITY: TSIDIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 5)) ; const SECURITY_BUILTIN_DOMAIN_RID = $00000020; DOMAIN_ALIAS_RID_ADMINS = $00000220; function IsWindowsAdmin: Boolean; var hAccessToken: THandle; ptgGroups: PTokenGroups; dwInfoBufferSize: DWORD; psidAdministrators: PSID; g: Integer; bSuccess: BOOL; begin Result := False; bSuccess := OpenThreadToken(GetCurrentThread, TOKEN_QUERY, True, hAccessToken) ; if not bSuccess then begin if GetLastError = ERROR_NO_TOKEN then bSuccess := OpenProcessToken(GetCurrentProcess, TOKEN_QUERY, hAccessToken) ; end; if bSuccess then begin GetMem(ptgGroups, 1024) ; bSuccess := GetTokenInformation(hAccessToken, TokenGroups, ptgGroups, 1024, dwInfoBufferSize) ; CloseHandle(hAccessToken) ; if bSuccess then begin AllocateAndInitializeSid(SECURITY_NT_AUTHORITY, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, psidAdministrators) ; for g := 0 to ptgGroups.GroupCount - 1 do if EqualSid(psidAdministrators, ptgGroups.Groups[g].Sid) then begin Result := True; Break; end; FreeSid(psidAdministrators) ; end; FreeMem(ptgGroups) ; end; end; end.
Responder Con Cita
  #4  
Antiguo 11-11-2008
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Cita:
Empezado por kalisto Ver Mensaje
Los nombres de usuario los puedes obtener mediante la función NetUserEnum. y la misma funcion tambien nos dice los privelegios del mismo administrador, invitado, o usuario.
Muchas gracias kalisto, me sirvio el ejemplo que me diste, pero me queda una duda
Como usar la funcion NetUserEnum, cual es su sintaxis, la busque en la ayuda pero no me aparece
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Que usuario esta logueado en mi pc.? mcalmanovici PHP 3 05-05-2008 21:59:13
Por fa, como crear menus dinámicos, con los items que un usuario tiene autorizados? Ale Alvarez OOP 6 16-08-2007 22:08:14
Obtener usuario Logueado en una red o IP. JELIRM Varios 1 06-05-2007 04:34:41
servicio windows que interaccione con el escritorio con usuario logueado derteo API de Windows 4 11-01-2006 15:52:44


La franja horaria es GMT +2. Ahora son las 17:11:59.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi