Inne zapisanie kodu sprawdzającego uprawnienia

0

Jak by można zapisać ten kod z standardowego pliku nagłówkowego zamiast importowania funkcji z biblioteki dynamicznej

#include <fstream>
#include <Shlobj.h>

int main()
{
	typedef BOOL(*PIsUserAnAdmin)();
	PIsUserAnAdmin pointer = reinterpret_cast<PIsUserAnAdmin>
		(GetProcAddress(LoadLibrary("shell32.dll"),"IsUserAnAdmin"));
	printf("%i",static_cast<bool>(pointer()));
}
0

Linkujesz Shell32.lib w opcjach projektu (jeśli korzystasz z Visual Studio). I wtedy po prostu używasz IsUserAnAdmin zdefiniowanego w Shlobj.h mając nadzieję, że linker powiąże wszystko.

1

tymi reinterpret_cast i static_cast tylko sobie kod zaśmiecasz, zwykły cast jest czytelniejszy a działa w tym przypadku bez zarzutu.

0

Dzięki za rady znalazłem znacznie prostszy sposób

#include <windows.h>
#include <winternl.h>
#include <fstream>

EXTERN_C NTSTATUS NTAPI RtlAdjustPrivilege(ULONG, BOOLEAN, BOOLEAN, PBOOLEAN);
int main()
{
     printf("%i",NT_SUCCESS(RtlAdjustPrivilege(20, TRUE, FALSE, &bl)));
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1