2010-01-18 13 views
1

J'essaie de voir si l'utilisateur a le privilège SeLoadDriver. J'ai la PLUID:Privilège utilisateur API WIN C++

PLUID pld; 
    LookupPrivilegeValue(NULL, SE_LOAD_DRIVER_NAME, pld); 

Mais maintenant je ne suis pas sûr comment obtenir un bool de la PLUID indiquant que l'utilisateur a, ou non, le privilège. J'ai lu les méthodes associées mais je pense que cela pourrait être un moyen facile de l'obtenir directement à partir de la valeur PLUID.

Merci

Répondre

3

C'est un peu plus complexe que ça.

Vous devez d'abord obtenir le privilège de jeton de processus défini (en appelant GetTokenInformation()) alors vous scannez le tampon que vous avez de ce (qui est un tableau de LUID_AND_ATTRIBUTES structures) pour le LUID que vous obtenez de LookupPrivilegeValue(). Vous pouvez ensuite utiliser le LUID_AND_ATTRIBUTES que vous avez localisé et vérifier si le Attributes contient le drapeau requis (SE_PRIVILEGE_ENABLED dans votre cas). Sachez que lorsque vous vérifiez un privilège activé, vous devez également vérifier que SE_PRIVILEGE_REMOVED n'est PAS défini dans le Attributes que vous vérifiez; un privilège qui a à la fois SE_PRIVILEGE_REMOVED et SE_PRIVILEGE_ENABLED a été supprimé et n'est PAS activé ...