MSDN の記事「C++での特権の有効化と無効化」では、アクセス トークンで特権を有効または無効にする方法を示すコード例が提供されています。
問題の部分を引用します。
tp.PrivilegeCount = 1;
tp.Privileges[0].Luid = luid;
if (bEnablePrivilege)
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
else
tp.Privileges[0].Attributes = 0;
Attributes
メンバーのゼロ値の意味は何ですか?
TOKEN_PRIVILEGES構造のドキュメントによると、特権の属性は次の値の組み合わせにすることができます。
SE_PRIVILEGE_ENABLED
( では0x00000002LですWinNT.h
)SE_PRIVILEGE_ENABLED_BY_DEFAULT
( では0x00000001LですWinNT.h
)SE_PRIVILEGE_REMOVED
( では0x00000004LですWinNT.h
)SE_PRIVILEGE_USED_FOR_ACCESS
( では0x80000000LですWinNT.h
)
したがって、値がゼロの有効な定数はありません。ゼロは に等しいと思いSE_PRIVILEGE_REMOVED
ます。
繰り返しますが、ゼロがすべての権限を無効にすることを意味する場合、 AdjustTokenPrivileges()のDisableAllPrivileges
パラメーターを に設定するだけですべての権限を無効にできるので、私はそれを疑っています。TRUE
ゼロ値が実際に何をするのか説明できる人 はいますか?