“CheckTokenMembership”来检查Admin Rights C ++

我试图使用CheckTokenMembershipfunction,我复制了微软网站上的代码片段( https://msdn.microsoft.com/pt-br/library/windows/desktop/aa376389(v=vs.85)。 aspx ),但我无法得到它的工作!

我得到“错误:”CheckTokenMembership“没有在此范围内声明”(在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 

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


附录:

在某些情况下,例如,如果使用SDK的旧版本或第三方版本,命名常量可能不起作用,您将不得不求助于魔术值,例如,上面的示例会变成

 #define _WIN32_WINNT 0x0601 

 #define _WIN32_WINNT 0x0A00 #define NTDDI_VERSION 0x0A000002 

您可以通过从Microsoft获得sdkddkver.h的最新版本来查看这些信息,或者您可以尝试所选的搜索引擎。 🙂