2017-08-14 155 views
1

我想使用CheckTokenMembership功能,我复制了微软网站上的代码片段(https://msdn.microsoft.com/pt-br/library/windows/desktop/aa376389(v=vs.85).aspx),但我只是不能让它工作!'CheckTokenMembership'来检查管理权利C++

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

我包括Windows.h甚至Winbase.h作为网站说。有没有人有任何想法如何解决这个问题?

+0

就是这样!非常感谢!它像一个魅力一样工作! 想添加这个作为答案,所以我可以给你信贷? – Skepller

回答

2

在包含windows.h之前,您需要指定应用程序将支持的最低版本的Windows。这里的想法是,如果使用在指定的Windows版本中不可用的API函数,构建将失败。如果您需要更具体一些,你还可以定义NTDDI_VERSION宏,例如,适用于Windows 10版本1607

#define _WIN32_WINNT _WIN32_WINNT_WIN7 

您可以通过定义_WIN32_WINNT宏,例如,对于Windows 7做到这一点:

#define _WIN32_WINNT _WIN32_WINNT_WIN10 
#define NTDDI_VERSION NTDDI_WIN10_RS1 

The documentation趋于落后,但你可以找到在sdkddkver.h定义的SDK。


附录:

在某些情况下,例如,如果使用旧的或第三方版本的SDK,命名常量可能不工作,你将不得不求助于魔法值,例如,上面的例子将成为

#define _WIN32_WINNT 0x0601 

#define _WIN32_WINNT 0x0A00 
#define NTDDI_VERSION 0x0A000002 

您可以通过obtai看这些了您可以从Microsoft获得sdkddkver.h的最新版本,或者您可以尝试您所选择的搜索引擎。 :-)