View Full Version : [C] Riconsocere se si possiedono i privilegi di amministratore
xeeynamo
30-03-2008, 22:47
Ciao a tutti, ho bisogno di implementare una cosa nel mio programma dopodichè l'ho finito al 100%. Mi servirebbe semplicemente sapere come faccio riconoscere al programma se ci sono o meno i privilegi di amministratore in un programma. Ad esempio se si è in un account che si hanno questi privilegi il programma si essegue normalmente, se si è loggati con un account limitato o su guest, il programma si avvia ma restituisce sulla finestra un errore che dice che bisogna essere in amministratore per poter esegure il programma. Inoltre se è possibile vorrei sapere anche come si implementa nel programma quella cosa in windows vista che per eseguire il programma bisogna avere obbligatoriamente i privilegi di amministratore (per farmi capire meglio quei programmi che sull'icona hanno quello scudo e se gli esegui diventa lo sfondo tutto scuro e ti appare una finestra che dice se vuoi eseguire o meno il programma in modalità amministratore).
La prima cosa mi serve assolutamente, la seconda cosa (quella di windows vista) non necessariamente. Ragà per favore rispondete perchè ho quasi finito il mio PRIMO e VERO programma (considerando che conosco il C da poco tempo) e vorrei tanto portarlo a termine privo di bug. Grazie a tutti ^^
m.distrutti
31-03-2008, 01:17
http://www.astercity.net/~azakrze3/html/win32_api_functios.html#GetUserName
http://msdn2.microsoft.com/en-us/library/ms724435(VS.85).aspx
penso tu ti voglia riferire a questo
se ritorna Administrator significa che in quel momento l'utente corrente e' appunto Administrator altrimenti se e' guest e' ospite oppure uno degli utenti :) non l'ho mai fatto quindi non potrei giurarci XD fammi sapere
kernel::panic
31-03-2008, 08:29
Con questa API è ancora più immediato:
http://msdn2.microsoft.com/en-us/library/bb776463.aspx
xeeynamo
31-03-2008, 11:14
http://www.astercity.net/~azakrze3/html/win32_api_functios.html#GetUserName
http://msdn2.microsoft.com/en-us/library/ms724435(VS.85).aspx
penso tu ti voglia riferire a questo
se ritorna Administrator significa che in quel momento l'utente corrente e' appunto Administrator altrimenti se e' guest e' ospite oppure uno degli utenti :) non l'ho mai fatto quindi non potrei giurarci XD fammi sapere
Con questo ottengo solo l'username! Cioè pure se non è administrator ma ha i privilegi di amministratore il programma non si esegue quindi non credo possa servirmi a molto >.<
Con questa API è ancora più immediato:
http://msdn2.microsoft.com/en-us/library/bb776463.aspx
Non compila purtroppo :( ho provato ad includere la libreria shell32 (provato sia con -lshell sia con libshell32) ma l'errore restituito è sempre
[Build Error] exe: *** Error 1
come posso fare?? Uso il compilatore wxDevC++ 6.10.2
Se risolvo questo piccolo problema oggi stesso rilascio finalmente il programma =)
kernel::panic
31-03-2008, 11:49
Puoi provare a chiamare la funzione dinamicamente:
BOOL IsAdmin()
{
BOOL bAdmin = FALSE;
HMODULE hDll = LoadLibrary("shell32.dll");
if(hDll)
{
typedef BOOL(*P_PROC)(void);
P_PROC pProc = (P_PROC)GetProcAddress(hDll, "IsUserAnAdmin");
if(pProc)
bAdmin = pProc();
FreeLibrary(hDll);
}
return bAdmin;
}
Così dovrebbe funzionare ;)
xeeynamo
31-03-2008, 13:03
Grazie milleeeee, funziona alla grande!! L'ho testato su Windows XP e Windows Vista e va bene!! Il programma è compatibile con Windows 2000, XP, Server 2003, Vista e Server 2008. Ho provato ad allegarlo al post ma purtroppo il file eccede di 3kb >.< chi vuole provare il programma mi più inviare un messaggio privato che gli dò il link per il download =)
m.distrutti
31-03-2008, 21:41
gia vero non avevo pensato ai possibili gruppi admin :S:rolleyes: :rolleyes:
vabbe ho imparato una API pure io ihih;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.