Настройте токены для непривилегированных учетных записей (C, Windows)

StackOverflow https://stackoverflow.com/questions/1212466

Вопрос

Я использую следующий код (который представляет собой слегка измененный образец из MSDN), чтобы проверить, есть ли у меня права отладки в процессе.Если нет, я пытаюсь их установить.

int SetDebugPriv()
{
    HANDLE TokenHandle;
    LUID lpLuid;
    TOKEN_PRIVILEGES NewState;

    if(!OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &TokenHandle))
    {
        //failed
        return 0;
    }

    if(!LookupPrivilegeValue(NULL, "SeDebugPrivilege" , &lpLuid))
    {
        //failed
        CloseHandle(TokenHandle);
        return 0;
    }

    NewState.PrivilegeCount = 1;
    NewState.Privileges[0].Luid = lpLuid;
    NewState.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

    if(!AdjustTokenPrivileges(TokenHandle, FALSE, &NewState, sizeof(NewState), NULL, NULL))
    {
        //failed
        CloseHandle(TokenHandle);
        return 0;
    }

    CloseHandle(TokenHandle);
    return 1;
}

Теперь под определенной учетной записью в Windows XP и 2003 я получаю сообщение об отказе в доступе при попытке установить токен.Я предполагаю, что я не могу установить этот конкретный токен, потому что у меня нет на это разрешения.Как мне установить токен отладки для учетных записей, не являющихся администраторами, или учетных записей с низкими привилегиями?

код приветствуется.

Спасибо

Это было полезно?

Решение

Вы не можете.Если бы вы могли, это была бы огромная дыра в безопасности (SeDebugPrivilege имеет больше моджо, чем администратор).

AdjustTokenPrivileges включает привилегию, которую имеет токен, но она не включена.Например, SeShutdownPrivilege — один из них.

Вам необходимо добавить привилегию к учетной записи пользователя, а затем пользователь должен выйти из системы и снова войти в нее (чтобы получить новый токен с привилегией).

Чтобы добавить привилегии к учетной записи пользователя программным способом, начните с этого: http://support.microsoft.com/kb/132958

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top