AdjustTokenPrivileges(プロセストークンの権限の調整)

AdjustTokenPrivileges関数は、指定したアクセストークンの特権を調整するために使用されます。トークン内の特権を有効または無効にするか、特権の属性を変更します。

C++ における AdjustTokenPrivileges 関数の構文は以下のとおりです:

BOOL AdjustTokenPrivileges(
HANDLE            TokenHandle,
BOOL              DisableAllPrivileges,
PTOKEN_PRIVILEGES NewState,
DWORD             BufferLength,
PTOKEN_PRIVILEGES PreviousState,
PDWORD            ReturnLength
);

Parameters:

  1. TokenHandle: 権限を修正するアクセストークンのハンドル
  2. DisableAllPrivileges: すべての権限を無効にするかどうかを指定します。このパラメータを TRUE に設定するとすべての権限が無効になり、FALSE に設定すると特定の権限を有効または無効にします。
  3. NewState: 配列の特権と属性を指定するTOKEN_PRIVILEGES構造体のポインタ。DisableAllPrivilegesパラメータがFALSEの場合、AdjustTokenPrivilegesはこの構造体のPrivilegeCountメンバーに応じた各特権を有効または無効にします。
  4. BufferLength: NewState パラメータで指定されたバッファのサイズをバイト単位で指定します。
  5. PreviousState: 変更された権限の以前の状態を受け取る、TOKEN_PRIVILEGES 構造へのポインタ。以前の状態情報が必要ない場合は、このパラメータを NULL にできます。
  6. ReturnLength:PreviousStateパラメータのバイト数となる変数を指すポインタ

戻り値:

  1. 関数が成功した場合に True を返し、それ以外の場合は False を返します。詳細なエラー情報を取得するには、GetLastError() を呼び出します。

ネイティブの日本語に言い換えてください。オプションは1つだけで結構です。使用例:

#include <windows.h>
#include <iostream>
int main()
{
// Open the current process's access token
HANDLE hToken;
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken))
{
std::cout << "Failed to open process token. Error: " << GetLastError() << std::endl;
return 1;
}
// Enable or disable a specific privilege
TOKEN_PRIVILEGES tp;
tp.PrivilegeCount = 1;
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if (!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tp.Privileges[0].Luid))
{
std::cout << "Failed to lookup privilege value. Error: " << GetLastError() << std::endl;
return 1;
}
if (!AdjustTokenPrivileges(hToken, FALSE, &tp, 0, NULL, NULL))
{
std::cout << "Failed to adjust token privileges. Error: " << GetLastError() << std::endl;
return 1;
}
std::cout << "Token privileges adjusted successfully." << std::endl;
// Close the token handle
CloseHandle(hToken);
return 0;
}

SE_DEBUG_NAME の特典を有効または無効にする方法を現在のプロセスのアクセス トークンから例を使って説明します。いくつかの特典を変更するには、管理者の特典が必要になることに注意してください。

bannerAds