C++ で AdjustTokenPrivileges が 1300 で失敗した場合の対処法を教えてください。
C++のAdjustTokenPrivileges()関数は、戻り値が0以外なら成功、0なら失敗を表します。AdjustTokenPrivileges()関数が失敗して0を返した場合、GetLastError()関数でエラーコードを取得できます。
エラーコード1300は”不正なユーザーまたはグループ識別子”を表します。これは、関数のAdjustTokenPrivileges()を呼び出す際に、渡されるハンドルまたは権限のパラメータに問題があることを意味します。
問題を解決するには、以下の手順で確認と修復をおこないます。
- ハンドル パラメータが正しいかどうか確認してください。ハンドル パラメータは有効なアクセス トークン ハンドルでなければなりません。これは、OpenProcessToken() 関数または OpenThreadToken() 関数で取得できます。権限を変更する必要があるトークン ハンドルを正しく取得しているか確認してください。
- 権限パラメータが正しいことを確認してください。権限パラメータは、調整する権限情報を含むTOKEN_PRIVILEGES構造体である必要があります。TOKEN_PRIVILEGES構造体のメンバ値が正しく設定されていることを確認してください。
- AdjustTokenPrivileges() 関数を呼び出すアクセス トークンが、SeDebugPrivilege 権限を持っているかどうかを確認します。AdjustTokenPrivileges() 関数を呼び出す前に、OpenProcessToken() または OpenThreadToken() 関数を呼び出してアクセス トークン ハンドルを取得し、LookupPrivilegeValue() 関数を使用して SeDebugPrivilege 権限を検索および設定する必要があります。
- 管理者権限でコードを実行していることを確認してください。場合によっては、権限の調整を正常に行うためには管理者として実行する必要があります。必ず管理者としてコードを実行してください。
上記手順をすべて確認しても問題が解決しない場合は、他の方法を使用するか、関連する他の関数を呼び出すことで同じ目的を達成することを検討できます。