2017-08-14 39 views
1

CheckTokenMembership関数を使用しようとしていますが、MicrosoftのWebサイト(https://msdn.microsoft.com/pt-br/library/windows/desktop/aa376389(v=vs.85).aspx)でサンプルコードをコピーしましたが、うまく動作しません。「CheckTokenMembership」で管理者権限を確認するC++

「エラー: 'CheckTokenMembership'が(コードブロックで)このスコープで宣言されていませんでした。

WebサイトにはWindows.hとWinbase.hも含まれています。誰にどのようにこれを修正するための任意のアイデアを持っていますか?

+0

これはまさにそれです!どうもありがとう!それは魅力のように働いた! これを回答として追加したいので、私はあなたに信用を与えることができますか? – Skepller

答えて

2

windows.hを含める前に、アプリケーションでサポートされるWindowsの最小バージョンを指定する必要があります。ここでの考え方は、指定されたWindowsバージョンでは利用できないAPI関数を使用するとビルドが失敗するということです。

は、Windows 7のために、例えば、_WIN32_WINNTマクロを定義することによってこれを行うことができます。

#define _WIN32_WINNT _WIN32_WINNT_WIN7 

をあなたはまた、Windows 10バージョン1607のために、例えば、NTDDI_VERSIONマクロを定義することができ、より具体的にする必要がある場合:

#define _WIN32_WINNT _WIN32_WINNT_WIN10 
#define NTDDI_VERSION NTDDI_WIN10_RS1 

The documentation遅れる傾向にあるが、あなたは、SDKにsdkddkver.hに定義を見つけることができます。


補遺:いくつかのケースでは

、例えば、SDKの古いまたはサードパーティのバージョンを使用している場合、名前付き定数は、動作しないことが、あなたは例えば、魔法の値に頼らなければならないでしょう、上記の例は、あなたがobtaiすることにより、これらを調べることができます

#define _WIN32_WINNT 0x0601 

#define _WIN32_WINNT 0x0A00 
#define NTDDI_VERSION 0x0A000002 

なりますマイクロソフトのsdkddkver.hの最新バージョンを使用している場合、またはお好みの検索エンジンを試すことができます。 :-)

関連する問題