AdjustTokenPrivilegesの後にエラーコード13が返ってきて、プロセスのアクセス権限が向上しません。

エラー13はアクセスが拒否されたことを示しています。プロセスのアクセス権を昇格させるには、昇格された権限を要求する特権トークンを使用する必要があります。以下は参考になるコード例です:

#include <Windows.h>
#include <iostream>

int main()
{
    HANDLE hToken;
    TOKEN_PRIVILEGES tokenPrivileges;
    LUID luid;

    // 打开当前进程的令牌
    if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
    {
        std::cout << "OpenProcessToken failed. Error: " << GetLastError() << std::endl;
        return 1;
    }

    // 获取SE_DEBUG_NAME的权限特权
    if (!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &luid))
    {
        std::cout << "LookupPrivilegeValue failed. Error: " << GetLastError() << std::endl;
        return 1;
    }

    // 设置特权令牌
    tokenPrivileges.PrivilegeCount = 1;
    tokenPrivileges.Privileges[0].Luid = luid;
    tokenPrivileges.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

    // 提升进程权限
    if (!AdjustTokenPrivileges(hToken, FALSE, &tokenPrivileges, sizeof(TOKEN_PRIVILEGES), NULL, NULL))
    {
        std::cout << "AdjustTokenPrivileges failed. Error: " << GetLastError() << std::endl;
        return 1;
    }

    std::cout << "Process access level has been elevated." << std::endl;

    return 0;
}

この例のコードは、現在のプロセスのトークンを開き、SE_DEBUG_NAMEの特権を取得し、AdjustTokenPrivileges関数を使用してプロセスの特権を昇格させます。エラー13が返された場合、特権が拒否されたことを意味します。これは、プロセスの特権を昇格するための十分な権限がないか、操作システムがその処理を許可していない可能性があります。

bannerAds