'CheckTokenMembership'检查管理员权限C ++

时间:2017-08-14 02:01:56

标签: c++ windows codeblocks

我正在尝试使用CheckTokenMembership函数,我复制了微软网站上的示例代码(https://msdn.microsoft.com/pt-br/library/windows/desktop/aa376389(v=vs.85).aspx),但我无法让它工作!

我得到“错误:'CheckTokenMembership'未在此范围内声明”(在CodeBlocks上),无论我做什么。

网站上说,我包括Windows.h甚至Winbase.h。有没有人知道如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

在加入windows.h之前,您需要指定应用程序支持的最低Windows版本。这里的想法是,如果您使用的API函数在指定的Windows版本中不可用,则构建将失败。

您可以通过定义_WIN32_WINNT宏来实现此目的,例如,对于Windows 7:

#define _WIN32_WINNT _WIN32_WINNT_WIN7

如果您需要更具体,还可以定义NTDDI_VERSION宏,例如,对于Windows 10版本1607:

#define _WIN32_WINNT _WIN32_WINNT_WIN10
#define NTDDI_VERSION NTDDI_WIN10_RS1

The documentation往往落后,但您可以在SDK中找到sdkddkver.h中的定义。

附录:

在某些情况下,例如,如果使用SDK的旧版本或第三方版本,指定的常量可能无效,您将不得不求助于魔术值,例如,上面的示例将变为

#define _WIN32_WINNT 0x0601

#define _WIN32_WINNT 0x0A00
#define NTDDI_VERSION 0x0A000002

您可以通过从Microsoft获取最新版本的sdkddkver.h来查看这些内容,或者您​​可以尝试使用您选择的搜索引擎。 : - )