Hola daryo yo para saber si soy administrador hice algo parecido pero yo intento escribir en el registro y si no me devuelve error 5 soy administrador pero esto no es nada
A mi no me basta solo con esto quiero mas.
leyendo un poco la msdn
( lo que hace falta tener un buen nivel de ingles :-'(
) y probando algunas cosas con el registro como escribir en el. y al parecer funciona :
#include <iostream>
#include <windows.h>
using namespace std;
int permisosadm();
int main()
{
if(permisosadm()==1)
{
HKEY lol;
SECURITY_INFORMATION asd;
PSECURITY_DESCRIPTOR nw;
DWORD resultado;
RegGetKeySecurity(lol,asd,nw,&resultado);
const char val[]="valor";
RegCreateKeyEx(HKEY_LOCAL_MACHINE,"software\\nuevo",0,NULL,0,KEY_WRITE,NULL,&lol,NULL);
//RegSetValue(lol,"jaja",REG_SZ,"prueba",0);
RegSetValueEx(lol,"prueba",0,REG_SZ,(LPBYTE)val,sizeof(val));
cout << "ya tengo permisos de administrador :D" << endl;
}
else
{
return 0;
}
return 0;
}
int permisosadm()
{
HANDLE archivo;
archivo=CreateFile("C:\\random",GENERIC_READ|GENERIC_WRITE ,FILE_SHARE_WRITE|FILE_SHARE_READ,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if(archivo==INVALID_HANDLE_VALUE)
{
CloseHandle(archivo);
TCHAR dir[2045];
GetModuleFileName(NULL,dir,2045);
ShellExecute(NULL,"runas",dir,NULL,NULL,SW_SHOWNORMAL);
return 0;
}
CloseHandle(archivo);
return 1;
}