Pues ya que esto lo había hecho para VB, ahora tocaba crear la misma función pero para C.
El Code es sencillo y solo usando la libreria windows, consigo ver los privilegios del usuario.
la funcion que lo consigue se llama iuaa(IsUserAnAdmin) y lo que hace es cargar la libreria advapi32 en caso de que no la cargue o de que no la inicialice, la funcion iuaa no retornara y no sera administrador.
El código:
#include <windows.h>
typedef BOOL( __stdcall *CTM ) ( HANDLE, PSID, PBOOL );
CTM CheckTokenMembership;
int IUAA()
{
int llave, dc;
PSID administrador;
SID_IDENTIFIER_AUTHORITY sAuthority = SECURITY_NT_AUTHORITY;
HMODULE advapilibreria = LoadLibrary( "advapi32" );
if( advapilibreria != NULL )
{
CheckTokenMembership = (CTM) GetProcAddress( advapilibreria, "CheckTokenMembership" );
if( CheckTokenMembership != NULL )
{
llave = AllocateAndInitializeSid( &sAuthority, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, &administrador );
if( llave == 1 )
{
dc = CheckTokenMembership( NULL, administrador, &llave );
if( dc == 0 ) {
llave = 1;
}}}}
return( llave );
}
int main()
{
if( IUAA( ) == 1 ) {
MessageBox(NULL,TEXT("Administrador"),TEXT("¿El usuario es un admin?"),MB_ICONWARNING | MB_OK );
} else {
MessageBox(NULL,TEXT("NO Administrador"),TEXT("¿El usuario es un admin?"),MB_ICONWARNING | MB_OK );
}
return( 0 );
}
Me he basado en dos paginas(principalmente) para idear esto:
You are not allowed to view links.
Register or
Login y You are not allowed to view links.
Register or
LoginY luego he buscado el modo de cargar una libreria, y sacar los errores.
Espero que os sirva.