Es el usuario administrador
Cómo determinar si el usuario ha iniciado la sesión como administrador. Autor desconocido.
const
& nbsp & nbsp SECURITY_NT_AUTHORITY: TSIDIdentifierAuthority =
& nbsp & nbsp & nbsp & nbsp (Valor: (0, 0, 0, 0, 0, 5))
const
& nbsp & nbsp SECURITY_BUILTIN_DOMAIN_RID = $00000020
& nbsp & nbsp DOMAIN_ALIAS_RID_ADMINS = $00000220
función IsAdmin: Boolean
var
& nbsp & nbsp hAccessToken: THandle
& nbsp & nbsp ptgGroups: PTokenGroups
& nbsp & nbsp dwInfoBufferSize: DWORD
& nbsp & nbsp psidAdministrators: PSID
& nbsp & nbsp x: Integer
& nbsp & nbsp bSuccess: BOOL
begin
& nbsp & nbsp Resultado := False
& nbsp & nbsp bSuccess := OpenThreadToken(GetCurrentThread, TOKEN_QUERY, es Cierto,
& nbsp & nbsp & nbsp & nbsp hAccessToken)
& nbsp & nbsp si no bSuccess, a continuación,
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp si GetLastError = de REFERENCIA, a continuación,
& nbsp & nbsp & nbsp & nbsp bSuccess := OpenProcessToken(GetCurrentProcess, TOKEN_QUERY,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp hAccessToken)
& nbsp & nbsp final
& nbsp & nbsp si bSuccess, a continuación,
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp GetMem(ptgGroups, 1024)
& nbsp & nbsp & nbsp & nbsp bSuccess := GetTokenInformation(hAccessToken, TokenGroups,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ptgGroups, 1024, dwInfoBufferSize)
& nbsp & nbsp & nbsp & nbsp CloseHandle(hAccessToken)
& nbsp & nbsp & nbsp & nbsp si bSuccess, a continuación,
& nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp AllocateAndInitializeSid(SECURITY_NT_AUTHORITY, 2, a
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp 0, 0, 0, 0, 0, 0, psidAdministrators)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp x := 0 a ptgGroups.GroupCount - 1 hacer
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si EqualSid(psidAdministrators, ptgGroups.Grupos[x].Sid), a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := True
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Break
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp FreeSid(psidAdministrators)
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp FreeMem(ptgGroups)
& nbsp & nbsp final
fin
Es el usuario administrador
Es el usuario administrador : Multi-millones de consejos para hacer su vida mas facil.
Como determinar si el usuario ha iniciado la sesion como administrador. Autor desconocido.
const
& nbsp & nbsp SECURITY_NT_AUTHORITY: TSIDIdentifierAuthority =
& nbsp & nbsp & nbsp & nbsp (Valor: (0, 0, 0, 0, 0, 5))
const
& nbsp & nbsp SECURITY_BUILTIN_DOMAIN_RID = $00000020
& nbsp & nbsp DOMAIN_ALIAS_RID_ADMINS = $00000220
funcion IsAdmin: Boolean
var
& nbsp & nbsp hAccessToken: THandle
& nbsp & nbsp ptgGroups: PTokenGroups
& nbsp & nbsp dwInfoBufferSize: DWORD
& nbsp & nbsp psidAdministrators: PSID
& nbsp & nbsp x: Integer
& nbsp & nbsp bSuccess: BOOL
begin
& nbsp & nbsp Resultado := False
& nbsp & nbsp bSuccess := OpenThreadToken(GetCurrentThread, TOKEN_QUERY, es Cierto,
& nbsp & nbsp & nbsp & nbsp hAccessToken)
& nbsp & nbsp si no bSuccess, a continuacion,
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp si GetLastError = de REFERENCIA, a continuacion,
& nbsp & nbsp & nbsp & nbsp bSuccess := OpenProcessToken(GetCurrentProcess, TOKEN_QUERY,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp hAccessToken)
& nbsp & nbsp final
& nbsp & nbsp si bSuccess, a continuacion,
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp GetMem(ptgGroups, 1024)
& nbsp & nbsp & nbsp & nbsp bSuccess := GetTokenInformation(hAccessToken, TokenGroups,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ptgGroups, 1024, dwInfoBufferSize)
& nbsp & nbsp & nbsp & nbsp CloseHandle(hAccessToken)
& nbsp & nbsp & nbsp & nbsp si bSuccess, a continuacion,
& nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp AllocateAndInitializeSid(SECURITY_NT_AUTHORITY, 2, a
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp 0, 0, 0, 0, 0, 0, psidAdministrators)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp x := 0 a ptgGroups.GroupCount - 1 hacer
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si EqualSid(psidAdministrators, ptgGroups.Grupos[x].Sid), a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := True
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Break
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp FreeSid(psidAdministrators)
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp FreeMem(ptgGroups)
& nbsp & nbsp final
fin
Es el usuario administrador
By Consejos Y Trucos
Es el usuario administrador : Multi-millones de consejos para hacer su vida más fácil.