Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.
Внимание! Некоторое время письма не доходят до аккаунтов MAIL RU GROUP, не доходят на все почтовые ящики mail.ru, inbox.ru, bk.ru. Пишите им жалобы, чтобы быстрее восстановили получение писем, регистрируйтесь через яндекс почту и gmail, туда письма с активизацией доходят.

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 10.12.2017, 16:09   #1
zastylow
 
Регистрация: 08.03.2013
Сообщений: 6
Репутация: 10
По умолчанию Не удается программно предоставить привилегию SeTakeOwnershipPrivilege с помощью AdjustTokenPrivileges

Хочу программно предоставить привилегию SeTakeOwnershipPrivilege текущему процессу с помощью AdjustTokenPrivileges. AdjustTokenPrivileges возвращает FALSE, а GetLastError() - ERROR_INVALID_HANDLE. Подобных примеров везде навалом, но у меня не работает. Может что-то добавить нужно или что-то не так делаю, или это в принципе невозможно? Подскажите, если кто-то разбирался с этим вопросом.

Код:

BOOL CRegEditDlg::SetPrivilege(CString privilege_name, BOOL bEnablePrivilege)
{
    CString s;
    HANDLE hToken;
    LUID luid;
    DWORD RetLen = 0;
    HANDLE hProcess;

    size_t sz = sizeof(TOKEN_PRIVILEGES);

    PTOKEN_PRIVILEGES pPriv = (PTOKEN_PRIVILEGES)_alloca(sz);
    PTOKEN_PRIVILEGES pOldPrivs = (PTOKEN_PRIVILEGES)_alloca(sz);

    hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, GetCurrentProcessId());

    try
    {
        OpenProcessToken(hProcess, TOKEN_QUERY || TOKEN_ADJUST_PRIVILEGES, &hToken);

        if (LookupPrivilegeValue(NULL, privilege_name, &luid))
        {
            pPriv->PrivilegeCount = 1;
            pPriv->Privileges[0].Luid = luid;

            if (bEnablePrivilege)
                pPriv->Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
            else
                pPriv->Privileges[0].Attributes = 0;

            if ( !AdjustTokenPrivileges(hToken,FALSE,pPriv,sz, pOldPrivs, &RetLen))
            { 
                s.Format(L"AdjustTokenPrivileges error: %u", GetLastError() ); 
                AfxMessageBox(s);
                return FALSE;
            } 
        }
    }
    catch (...)
    {
        try
        {
            CloseHandle(hToken);
        }
        catch (...)
        {
        }
    }

    return TRUE;
}

zastylow вне форума   Ответить с цитированием
Старый 10.12.2017, 16:20   #2
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 12,826
Репутация: 2143
По умолчанию

Код:

TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES

__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x на форуме   Ответить с цитированием
Старый 10.12.2017, 19:06   #3
zastylow
 
Регистрация: 08.03.2013
Сообщений: 6
Репутация: 10
По умолчанию

Большое спасибо! Заработало! Вот что значит свежий взгляд...
zastylow вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка в AdjustTokenPrivileges helper999999 Общие вопросы Delphi 5 16.02.2015 22:33
Как предоставить доступ к папке определенному пользователю программно? artemavd Общие вопросы Delphi 6 21.06.2012 01:51
предоставить небольшой проект содержаший среднее кол-во компонентов RAFGOBLIN Свободное общение 4 01.07.2009 15:18
При создании нового листа программно поставить на него защиту (с помощью VBA) Lis000iq Microsoft Office Excel 2 30.06.2009 18:41
Как программно назначить привилегию или писать в реестр через WinApi ? UnD)eaD)Snake Win Api 16 27.09.2007 20:20


08:04.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru