2017-08-14 3 views
1

J'essaie d'utiliser la fonction CheckTokenMembership, j'ai copié l'exemple de code sur le site Web de Microsofts (https://msdn.microsoft.com/pt-br/library/windows/desktop/aa376389(v=vs.85).aspx), mais je n'arrive pas à le faire fonctionner! J'obtiens "error: 'CheckTokenMembership' n'a pas été déclaré dans cette portée" (sur CodeBlocks) peu importe ce que je fais. J'inclus Windows.h et même Winbase.h comme le dit le site Web. Est-ce que quelqu'un a une idée sur la façon de résoudre ce problème?'CheckTokenMembership' pour vérifier les droits d'administration C++

+0

C'est exactement ça! Merci beaucoup! Ça a marché comme sur des roulettes! Vous voulez ajouter ceci comme réponse afin que je puisse vous donner le crédit? – Skepller

Répondre

2

Avant d'inclure windows.h, vous devez spécifier la version minimale de Windows que votre application prendra en charge. L'idée ici est que la construction échouera si vous utilisez une fonction API qui n'est pas disponible dans la version Windows spécifiée.

Vous pouvez le faire en définissant la _WIN32_WINNT macro, par exemple, pour Windows 7:

#define _WIN32_WINNT _WIN32_WINNT_WIN7 

Si vous devez être plus que vous pouvez spécifique également définir la NTDDI_VERSION macro, par exemple, pour la version de Windows 10 1607:

#define _WIN32_WINNT _WIN32_WINNT_WIN10 
#define NTDDI_VERSION NTDDI_WIN10_RS1 

The documentation tend à retard, mais vous pouvez trouver les définitions sdkddkver.h dans le SDK.


Addendum:

Dans certains cas, par exemple, si vous utilisez une ancienne ou une version tiers du SDK, les constantes nommées peuvent ne pas fonctionner et vous devrez recourir à des valeurs magiques, par exemple, les exemples ci-dessus deviendrait

#define _WIN32_WINNT 0x0601 

et

#define _WIN32_WINNT 0x0A00 
#define NTDDI_VERSION 0x0A000002 

Vous pouvez regarder par ces obtai Si vous utilisez une version récente de sdkddkver.h de Microsoft, vous pouvez essayer le moteur de recherche de votre choix. :-)