デバッグ特権
デバッグ特権を使用すると、他のユーザーがアクセスできないプロセスをデバッグできます。 たとえば、トークンでデバッグ特権が有効になっているユーザーに実行されているプロセスは、ローカル システムとして実行されているサービスをデバッグできます。
デバッグ特権は、ユーザーがデバッガーをプロセスまたはカーネルにアタッチできるようにするセキュリティ ポリシー設定です。 管理者は、ユーザー グループのセキュリティ ポリシーを変更して、この機能を追加したり削除したりできます。 独自のアプリケーションをデバッグしている開発者には、このユーザー特権は必要ありません。 システム コンポーネントをデバッグしている開発者、またはリモート コンポーネントをデバッグしている開発者の場合は、このユーザー特権が必要です。 このユーザー特権は、機密性の高い重要なオペレーティング システム コンポーネントへのフル アクセスを提供します。 既定では、このプロパティは、管理者権限を持つユーザーに対して有効になっています。 管理者権限を持つユーザーは、他のユーザー グループに対してこのプロパティを有効にすることができます。
プロセスのデバッグ特権の変更
次のコード例は、プロセスでデバッグ特権を有効にする方法を示しています。 これにより、アクセスできない他のプロセスをデバッグできます。
//
// SetPrivilege enables/disables process token privilege.
//
BOOL SetPrivilege(HANDLE hToken, LPCTSTR lpszPrivilege, BOOL bEnablePrivilege)
{
LUID luid;
BOOL bRet=FALSE;
if (LookupPrivilegeValue(NULL, lpszPrivilege, &luid))
{
TOKEN_PRIVILEGES tp;
tp.PrivilegeCount=1;
tp.Privileges[0].Luid=luid;
tp.Privileges[0].Attributes=(bEnablePrivilege) ? SE_PRIVILEGE_ENABLED: 0;
//
// Enable the privilege or disable all privileges.
//
if (AdjustTokenPrivileges(hToken, FALSE, &tp, NULL, (PTOKEN_PRIVILEGES)NULL, (PDWORD)NULL))
{
//
// Check to see if you have proper access.
// You may get "ERROR_NOT_ALL_ASSIGNED".
//
bRet=(GetLastError() == ERROR_SUCCESS);
}
}
return bRet;
}
次の例は、 この関数の使用法を示しています。
HANDLE hProcess=GetCurrentProcess();
HANDLE hToken;
if (OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES, &hToken))
{
SetPrivilege(hToken, SE_DEBUG_NAME, TRUE);
CloseHandle(hToken);
}
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示