2017-08-14 3 views
1

Ich versuche, die CheckTokenMembership-Funktion zu verwenden, ich kopierte das Beispielcode auf Microsofts Website (https://msdn.microsoft.com/pt-br/library/windows/desktop/aa376389(v=vs.85).aspx), aber ich kann es einfach nicht zum Funktionieren bringen!'CheckTokenMembership', um nach Administratorrechten zu suchen C++

Ich bekomme "Fehler: 'CheckTokenMembership' wurde in diesem Bereich nicht deklariert" (auf CodeBlocks) egal was ich tue.

Ich schließe Windows.h und sogar Winbase.h wie die Website sagt. Hat jemand eine Idee, wie man das beheben kann?

+0

Das ist genau das! Danke vielmals! Es hat funktioniert wie ein Zauber! Willst du das als Antwort hinzufügen, damit ich dir den Kredit geben kann? – Skepller

Antwort

2

Bevor Sie windows.h einschließen, müssen Sie die Mindestversion von Windows angeben, die von Ihrer Anwendung unterstützt wird. Die Idee hier ist, dass der Build fehlschlägt, wenn Sie eine API-Funktion verwenden, die in der angegebenen Windows-Version nicht verfügbar ist.

Sie können dies tun, indem Sie die _WIN32_WINNT Makro definieren, zB für Windows 7:

#define _WIN32_WINNT _WIN32_WINNT_WIN7 

Wenn Sie spezifischer sein müssen, können Sie auch die NTDDI_VERSION Makro definieren, zB für Windows 10 Version 1607:

#define _WIN32_WINNT _WIN32_WINNT_WIN10 
#define NTDDI_VERSION NTDDI_WIN10_RS1 

The documentation neigt zurückzubleiben, aber Sie können die Definitionen in sdkddkver.h im SDK finden.


Nachtrag:

In einigen Fällen, zum Beispiel wenn eine alte oder von Drittanbietern Version des SDK verwenden, kann nicht funktionieren die genannten Konstanten und Sie werden auf magische Werte zurückgreifen, zum Beispiel, die obigen Beispiele würden

#define _WIN32_WINNT 0x0601 

und

#define _WIN32_WINNT 0x0A00 
#define NTDDI_VERSION 0x0A000002 

werden Sie diese nach oben durch obtai aussehen kann ning eine aktuelle Version von sdkddkver.h von Microsoft oder Sie könnten versuchen, die Suchmaschine Ihrer Wahl. :-)

Verwandte Themen