我试图使用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
的最新版本来查看这些信息,或者您可以尝试所选的搜索引擎。 🙂