|
6 / 6 / 5
Регистрация: 25.02.2015
Сообщений: 202
|
|||||||||||
Не получается сгруппировать запущенные процессы по ключу SID03.08.2015, 19:47. Показов 2326. Ответов 32
Метки нет (Все метки)
Задача простая - разделить запущенные в системе процессы на системные и запущенные пользователем.
Пытаюсь отфильтровать хотя бы процессы с ключом "Local":
0
|
|||||||||||
| 03.08.2015, 19:47 | |
|
Ответы с готовыми решениями:
32
Qt приложение отображающее запущенные процессы
Как просмотреть все запущенные процессы |
|
Ушел с форума
|
||||||||||||||||||||||||||||
| 03.08.2015, 20:40 | ||||||||||||||||||||||||||||
то условие сработает и зачем-то будет вызван CloseHandle.
И где, кстати, проверка, что hProcess != NULL ?
И снова нет проверки ошибок.
И опять нет проверки ошибок. нужен, а TOKEN_QUERY.
0
|
||||||||||||||||||||||||||||
|
6 / 6 / 5
Регистрация: 25.02.2015
Сообщений: 202
|
||||||||||
| 03.08.2015, 21:03 [ТС] | ||||||||||
|
Добавлено через 52 секунды Добавлено через 34 секунды Добавлено через 32 секунды
0
|
||||||||||
|
Ушел с форума
|
||||||||||||||
| 03.08.2015, 21:09 | ||||||||||||||
Да, и после успешного вызова этой функции следует проверить, что GetLastError == 0, только тогда она успешна.
0
|
||||||||||||||
|
6 / 6 / 5
Регистрация: 25.02.2015
Сообщений: 202
|
||||||||||||||||
| 03.08.2015, 21:28 [ТС] | ||||||||||||||||
|
Чуть переделал код как ты посоветовал:
Че за фигня????Может потому что виндовс 10? Добавлено через 10 минут Извиняюсь вот конечный код, не работает на той же функции:
0
|
||||||||||||||||
|
Ушел с форума
|
|
| 03.08.2015, 22:47 | |
|
Значит, так. Во-первых, OpenProcessToken с сохранением токена в thSnapShot, где у
тебя хранится совсем другой хэндл - неправильно. Во-вторых, CheckTokenMembership здесь использовать не совсем удачно. Потому что скормить ей токен, полученный через OpenProcessToken, сразу не получится, придется еще вызывать DuplicateTokenEx, а для этого нужны еще права TOKEN_DUPLICATE, но не все процессы тебе их дадут. Более точно действовать так: вызвать GetTokenInformation два раза, первый с кодом TokenUser, второй с TokenGroups, и среди полученных SID-ов уже искать нужный. Для этого есть функция EqualSid. Да, и из групп следует перебирать только те, у которых в атрибутах установлен флаг SE_GROUP_ENABLED. И еще. Process32Next нужно вызывать в конце цикла, а не в начале.
1
|
|
|
6 / 6 / 5
Регистрация: 25.02.2015
Сообщений: 202
|
|||||||
| 03.08.2015, 23:36 [ТС] | |||||||
0
|
|||||||
|
Ушел с форума
|
||||||
| 03.08.2015, 23:42 | ||||||
это указатель на переменную HANDLE, куда будет записан полученный хэндл. Здесь указатель равен NULL. Скорее всего, GetLastError здесь будет 0x57 (invalid parameter).
0
|
||||||
|
6 / 6 / 5
Регистрация: 25.02.2015
Сообщений: 202
|
||||||||||||
| 03.08.2015, 23:54 [ТС] | ||||||||||||
Текущий код:
0
|
||||||||||||
|
Ушел с форума
|
|
| 04.08.2015, 00:01 | |
|
0
|
|
|
6 / 6 / 5
Регистрация: 25.02.2015
Сообщений: 202
|
|||||||
| 04.08.2015, 08:46 [ТС] | |||||||
|
Добавлено через 1 минуту
Типа она не может чекнуть принадлежность процесса к группе "Local"
0
|
|||||||
|
Ушел с форума
|
|
| 04.08.2015, 09:23 | |
|
Потому что для работы CheckTokenMembership нужен impersonation token, а
OpenProcessToken возвращает primary token. Писал ведь выше - использовать для данной задачи CheckTokenMembership не стоит, лучше написать свою реализацию через GetTokenInformation с TokenUser и TokenGroup и искать нужный SID среди тех, которые были получены этими функциями.
0
|
|
|
6 / 6 / 5
Регистрация: 25.02.2015
Сообщений: 202
|
||||||
| 04.08.2015, 21:38 [ТС] | ||||||
|
Начал делать как ты все посоветовал, и первым делом GetTokenInformation возвращает 0 на всех процессах, в чем ошибся?
Не это ли мне нужно? https://msdn.microsoft.com/ru-... s.85).aspx
0
|
||||||
|
Ушел с форума
|
||
| 04.08.2015, 21:44 | ||
|
Зайди на MSDN сюда GetTokenInformation function https://msdn.microsoft.com/ru-... 85%29.aspx а потом посмотри на свой код и подумай, что и зачем ты передаешь в эту функцию.
0
|
||
|
6 / 6 / 5
Регистрация: 25.02.2015
Сообщений: 202
|
|||||||
| 04.08.2015, 21:56 [ТС] | |||||||
0
|
|||||||
|
Ушел с форума
|
|
| 04.08.2015, 22:04 | |
|
Да опять неправильно. Вместо HANDLE токена в GetTokenInformation первым
агрументом ты зачем-то передаешь указатель на HANDLE. Дальше, pUserInfo у тебя указывает в никуда, а должен указывать на буфер размером в dwSize.
0
|
|
|
6 / 6 / 5
Регистрация: 25.02.2015
Сообщений: 202
|
|||||||
| 05.08.2015, 07:18 [ТС] | |||||||
0
|
|||||||
|
Ушел с форума
|
|
| 05.08.2015, 09:31 | |
|
Далее тебе нужно заглянуть в pUserInfo->User.Sid и сравнить его с SID-ом,
который был создан CreateWellKnownSid (для сравнения используется функция EqualSid). Если SID-ы разные, тогда снова вызываешь GetTokenInformation, только уже с кодом TokenGroups, и в массиве Groups снова ищешь свой SID, пропуская те группы, у которых в Attributes не установлен флаг SE_GROUP_ENABLED.
0
|
|
|
6 / 6 / 5
Регистрация: 25.02.2015
Сообщений: 202
|
||||||
| 05.08.2015, 19:03 [ТС] | ||||||
|
EqualSid во всех случаях возвращает 0, как быть, где ошибся?
0
|
||||||
|
Ушел с форума
|
|
| 05.08.2015, 19:43 | |
|
Ошибка в вызове GetTokenInformation с TokenGroups.
См. внимательно параметры функции, она должна заполнить структуру TOKEN_GROUPS, в ней массив SID-ов.
0
|
|
| 05.08.2015, 19:43 | |
|
Помогаю со студенческими работами здесь
20
В диспетчере задач висят процессы запущенные пользователем
Можно ли вместо поиска окон (FindWindow) искать запущенные процессы? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи
и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|