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

'CheckTokenMembership' to check for Admin Rights C++

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

无论我做什么,我都会 "error: 'CheckTokenMembership' was not declared in this scope"(在 CodeBlocks 上)。

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

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

您可以通过定义 _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 的最新版本来查找这些内容,或者您​​可以尝试使用您选择的搜索引擎。 :-)