2017-08-14 111 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的最新版本,或者您可以嘗試您所選擇的搜索引擎。 :-)