ШАРИК Опубликовано 29 сентября, 2016 Автор Поделиться Опубликовано 29 сентября, 2016 (изменено) Скрытый текст Изменено 29 сентября, 2016 пользователем ШАРИК Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 30 сентября, 2016 Поделиться Опубликовано 30 сентября, 2016 Автор, в теме выложили уже два по сути готовых решения, чем они тебе не подходят? Ссылка на комментарий Поделиться на другие сайты Поделиться
gmz Опубликовано 30 сентября, 2016 Поделиться Опубликовано 30 сентября, 2016 в моем примере все они фильтр. кроме smss.exe wininet.exe тд тп. там явно надо другой метод 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
ШАРИК Опубликовано 30 сентября, 2016 Автор Поделиться Опубликовано 30 сентября, 2016 4 часа назад, gmz сказал: в моем примере все они фильтр. кроме smss.exe wininet.exe тд тп. там явно надо другой метод Так бы ничего , но бесит то , что у них размер одинаковый выводится Скрытый текст Ссылка на комментарий Поделиться на другие сайты Поделиться
Dino Опубликовано 30 сентября, 2016 Поделиться Опубликовано 30 сентября, 2016 Дай угадаю.. размер получаешь при помощи GetProcessMemoryInfo, при этом не получив отладочные привилегии? Ссылка на комментарий Поделиться на другие сайты Поделиться
ШАРИК Опубликовано 30 сентября, 2016 Автор Поделиться Опубликовано 30 сентября, 2016 1 минуту назад, Dino сказал: Дай угадаю.. размер получаешь при помощи GetProcessMemoryInfo, при этом не получив отладочные привилегии? Нуу... Да . А как их получить ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Dino Опубликовано 30 сентября, 2016 Поделиться Опубликовано 30 сентября, 2016 (изменено) Скрытый текст 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; } Изменено 30 сентября, 2016 пользователем Dino 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
ШАРИК Опубликовано 30 сентября, 2016 Автор Поделиться Опубликовано 30 сентября, 2016 Спасибо Ссылка на комментарий Поделиться на другие сайты Поделиться
ШАРИК Опубликовано 12 октября, 2016 Автор Поделиться Опубликовано 12 октября, 2016 Здравствуйте. У меня такая ситуация , после вызова этой функции начинают создаваться потоки . Как это исправить ? Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 12 октября, 2016 Поделиться Опубликовано 12 октября, 2016 16 minutes ago, ШАРИК said: Здравствуйте. У меня такая ситуация , после вызова этой функции начинают создаваться потоки . Как это исправить ? А что должно происходить? 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Dino Опубликовано 12 октября, 2016 Поделиться Опубликовано 12 октября, 2016 24 минуты назад, ШАРИК сказал: Здравствуйте. У меня такая ситуация , после вызова этой функции начинают создаваться потоки . Как это исправить ? Я тоже не понял смысл вопроса 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
ШАРИК Опубликовано 12 октября, 2016 Автор Поделиться Опубликовано 12 октября, 2016 7 минут назад, keng сказал: А что должно происходить? Ну смотрите , вызвал функцию . Создался поток . И потом мне в лог стодии выводится информация о том , что создались ещё какие-то потоки . Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 12 октября, 2016 Поделиться Опубликовано 12 октября, 2016 Не вижу проблемы, если потоки создает ОС, а не ты сам. HANDLE токена ты закрываешь, память не течет, так что все в порядке. Не могу навскидку вспомнить, как точно работает механизм токенов и создаются ли там в процессе потоки, но точно уверен, что создаются - как минмиум, чтобы вытащить текущую сессию пользователя. PS: В конце функции нужно закрыть hToken, как я понимаю. Или ты закрываешь его дальше? 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
ШАРИК Опубликовано 12 октября, 2016 Автор Поделиться Опубликовано 12 октября, 2016 1 час назад, keng сказал: Не вижу проблемы, если потоки создает ОС, а не ты сам. HANDLE токена ты закрываешь, память не течет, так что все в порядке. Не могу навскидку вспомнить, как точно работает механизм токенов и создаются ли там в процессе потоки, но точно уверен, что создаются - как минмиум, чтобы вытащить текущую сессию пользователя. PS: В конце функции нужно закрыть hToken, как я понимаю. Или ты закрываешь его дальше? Я использую готовый код , который скинул Dino Скрытый текст 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; } Может нужно как-то снимать отладочные привилегии ? Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 12 октября, 2016 Поделиться Опубликовано 12 октября, 2016 Тогда возникает вопрос - зачем их получать? 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
ШАРИК Опубликовано 12 октября, 2016 Автор Поделиться Опубликовано 12 октября, 2016 (изменено) 9 минут назад, keng сказал: Тогда возникает вопрос - зачем их получать? Ну мне они нужны . Зачем ? Описано выше . Так что надо получать , делать то что нужно и отключать ) (быстро отвечаете ) Изменено 12 октября, 2016 пользователем ШАРИК Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 12 октября, 2016 Поделиться Опубликовано 12 октября, 2016 45 minutes ago, ШАРИК said: Ну мне они нужны . Зачем ? Описано выше . Так что надо получать , делать то что нужно и отключать ) (быстро отвечаете ) Тогда, видимо, я все еще не понимаю в чем проблема. Потоки создаются неконтролируемо? Ссылка на комментарий Поделиться на другие сайты Поделиться
ШАРИК Опубликовано 12 октября, 2016 Автор Поделиться Опубликовано 12 октября, 2016 7 минут назад, keng сказал: Тогда, видимо, я все еще не понимаю в чем проблема. Потоки создаются неконтролируемо? да Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 12 октября, 2016 Поделиться Опубликовано 12 октября, 2016 Если @Dino скажет, что у него с его кодом та же проблема - тогда так и будем думать и искать проблему в его коде. Если нет - то проблема в твоем коде, @ШАРИК. Ссылка на комментарий Поделиться на другие сайты Поделиться
ШАРИК Опубликовано 12 октября, 2016 Автор Поделиться Опубликовано 12 октября, 2016 (изменено) Только что, keng сказал: Если @Dino скажет, что у него с его кодом та же проблема - тогда так и будем думать и искать проблему в его коде. Если нет - то проблема в твоем коде, @ШАРИК. Как проблема может быть в моём коде , ели я вызываю только его функцию ? -__- Если я её не вызову , то никаких потоков не будет Изменено 12 октября, 2016 пользователем ШАРИК Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 12 октября, 2016 Поделиться Опубликовано 12 октября, 2016 2 minutes ago, ШАРИК said: Как проблема может быть в моём коде , ели я вызываю только его функцию ? -__- Если я её не вызову , то никаких потоков не будет Примерно так, что WinAPI сама по себе довольно редко создает новые потоки, тем более - в контексте вызывающего приложения. Может быть так, что ты вызываешь эту функцию вместе с какой-то другой. Может быть, что вызываешь ее в цикле. Все, что угодно может быть, пока никто не видел код. Т.е. у меня, например, одна вот эта функция не начинает создавать потоки, она отрабатывает и программа завершается. Ссылка на комментарий Поделиться на другие сайты Поделиться
ШАРИК Опубликовано 12 октября, 2016 Автор Поделиться Опубликовано 12 октября, 2016 Только что, keng сказал: Примерно так, что WinAPI сама по себе довольно редко создает новые потоки, тем более - в контексте вызывающего приложения. Может быть так, что ты вызываешь эту функцию вместе с какой-то другой. Может быть, что вызываешь ее в цикле. Все, что угодно может быть, пока никто не видел код. Т.е. у меня, например, одна вот эта функция не начинает создавать потоки, она отрабатывает и программа завершается. Я её вызываю .Создаётся 1 поток и не завершается . И через пару минут создаётся ещё 3 потока . А если не вызываю , то никаких потоков не создаётся . Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 12 октября, 2016 Поделиться Опубликовано 12 октября, 2016 Попробуй фигануть "CloseHandle(hToken)" перед выходом из функции. Опять же, я не знаю, что там дальше происходит - может и не нужно сразу закрывать хэндл. Ссылка на комментарий Поделиться на другие сайты Поделиться
Dino Опубликовано 12 октября, 2016 Поделиться Опубликовано 12 октября, 2016 38 минуты назад, keng сказал: Попробуй фигануть "CloseHandle(hToken)" перед выходом из функции. Опять же, я не знаю, что там дальше происходит - может и не нужно сразу закрывать хэндл. Да в принципе можно закрыть, он ведь больше не нужен ШАРИК 1)код покажи вместе с мейном 2)IDE какая ? 3)Что возвращает функция ? Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 12 октября, 2016 Поделиться Опубликовано 12 октября, 2016 9 minutes ago, Dino said: 2)IDE какая ? Что от этого зависит? О_о Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения