Dino Опубликовано 12 октября, 2016 Поделиться Опубликовано 12 октября, 2016 Только что, keng сказал: Что от этого зависит? О_о Конечно нет , мне просто интересно Ссылка на комментарий Поделиться на другие сайты Поделиться
ШАРИК Опубликовано 13 октября, 2016 Автор Поделиться Опубликовано 13 октября, 2016 (изменено) Вот скрин Скрытый текст Вот код: Скрытый текст //--------------------------------------------------------------------------- #pragma hdrstop #include <iostream> #include <tchar.h> //--------------------------------------------------------------------------- #include <Windows.h> #pragma argsused bool GetPriv() { TOKEN_PRIVILEGES Priv, PrivOld; DWORD cbPriv = sizeof(PrivOld); HANDLE hToken; DWORD dwError; // получаем токен текущего потока if (!OpenThreadToken(GetCurrentThread(), TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES, FALSE, &hToken)) { if (GetLastError() != ERROR_NO_TOKEN) return FALSE; // используем токен процесса, если потоку не назначено // никакого токена if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES, &hToken)) return FALSE; } Priv.PrivilegeCount = 1; Priv.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &Priv.Privileges[0].Luid); // попробуем включить привилегию if (!AdjustTokenPrivileges(hToken, FALSE, &Priv, sizeof(Priv), &PrivOld, &cbPriv)) { dwError = GetLastError(); CloseHandle(hToken); return SetLastError(dwError), FALSE; } return TRUE; } int _tmain(int argc, _TCHAR* argv[]) { bool a =GetPriv(); system("pause"); return 0; } //--------------------------------------------------------------------------- Потоки создаются из-за OpenThreadToken Изменено 13 октября, 2016 пользователем ШАРИК Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 13 октября, 2016 Поделиться Опубликовано 13 октября, 2016 @ШАРИК, как я уже писал ранее, hToken нужно закрывать. Я нашел [пример] использования от MS, у них код в общем-то схожий, так что можно просто забить. В любом случае в потоках нет ничего страшного, да и не ты сам их открываешь. Раз винде надо - значит надо. Ссылка на комментарий Поделиться на другие сайты Поделиться
Dino Опубликовано 13 октября, 2016 Поделиться Опубликовано 13 октября, 2016 (изменено) 58 минут назад, keng сказал: @ШАРИК, как я уже писал ранее, hToken нужно закрывать. Я нашел [пример] использования от MS, у них код в общем-то схожий, так что можно просто забить. В любом случае в потоках нет ничего страшного, да и не ты сам их открываешь. Раз винде надо - значит надо. Согласен, проблема прям высосана из пальца. @ШАРИК, если тебе принципиально получить доступ к структуре PROCESS_MEMORY_COUNTERS , то можно все это дело провернуть на уровне Native Api, тогда не нужно будет получать привилегии и хендлы всякие по 100 раз открывать. Изменено 13 октября, 2016 пользователем Dino Ссылка на комментарий Поделиться на другие сайты Поделиться
ШАРИК Опубликовано 13 октября, 2016 Автор Поделиться Опубликовано 13 октября, 2016 (изменено) 2 часа назад, keng сказал: @ШАРИК, как я уже писал ранее, hToken нужно закрывать. Я нашел [пример] использования от MS, у них код в общем-то схожий, так что можно просто забить. В любом случае в потоках нет ничего страшного, да и не ты сам их открываешь. Раз винде надо - значит надо. Так закрыл hToken (CloseHandle(hToken);) , всё равно пишет о созданных потоках Изменено 13 октября, 2016 пользователем ШАРИК Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 13 октября, 2016 Поделиться Опубликовано 13 октября, 2016 16 minutes ago, ШАРИК said: Так закрыл hToken (CloseHandle(hToken);) , всё равно пишет о созданных потоках Ок, давай еще раз. Чем они тебе мешают? Ссылка на комментарий Поделиться на другие сайты Поделиться
gmz Опубликовано 13 октября, 2016 Поделиться Опубликовано 13 октября, 2016 заюзай такое: DWORD temp; HMODULE ntdll = GetModuleHandleW(L"ntdll.dll"); NTSTATUS WINAPI (*RtlAdjustPrivilege)(ULONG,BOOLEAN,BOOLEAN,PDWORD); *(FARPROC*)&RtlAdjustPrivilege = GetProcAddress(ntdll,"RtlAdjustPrivilege"); RtlAdjustPrivilege(20,1,0,&temp); //SeDebugPrivilege или extern "C" NTSYSAPI NTSTATUS WINAPI RtlAdjustPrivilege(ULONG,BOOLEAN,BOOLEAN,PDWORD); или NTSYSAPI NTSTATUS WINAPI RtlAdjustPrivilege(ULONG,BOOLEAN,BOOLEAN,PDWORD); DWORD temp; RtlAdjustPrivilege(20,1,0,&temp); //SeDebugPrivilege 7 минут назад, keng сказал: Ок, давай еще раз. Чем они тебе мешают? сдался ему этот SeDebugPrivilege lulz 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 13 октября, 2016 Поделиться Опубликовано 13 октября, 2016 Не надо native api, это сложна. ;c Ссылка на комментарий Поделиться на другие сайты Поделиться
gmz Опубликовано 13 октября, 2016 Поделиться Опубликовано 13 октября, 2016 2 минуты назад, keng сказал: Не надо native api, это сложна. ;c на мингве 2 вариант даже ntdll.dll в табл. импорта добавляет 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
ШАРИК Опубликовано 13 октября, 2016 Автор Поделиться Опубликовано 13 октября, 2016 1 час назад, keng сказал: Ок, давай еще раз. Чем они тебе мешают? Я работаю с потоками . И я очень часто приходится смотреть в лог , какие потоки , когда создаются и завершаются . Но там ещё и те лишние потоки. . Они очень мешают . Неужели нет способа избавиться от этих потоков ? Ссылка на комментарий Поделиться на другие сайты Поделиться
ШАРИК Опубликовано 13 октября, 2016 Автор Поделиться Опубликовано 13 октября, 2016 GMZ , спасибо , ты всё решил Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения