![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| visual |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 14.5.2003 Репутация: нет Всего: нет |
ребята, подскажите пожалуйста !!!
Как узнать системный процесс или нет ?? Модератор: пишите грамотней. Если используете translit, прочитайте его описание. Это сообщение отредактировал(а) RAN - 30.8.2003, 23:18 |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
А че такое системный процесс? Я поставлю процесс в автозагрузку, вот его система запустила => он системный... А еще есть сервисы и драйверы, а еще есть RegisterServiceProcess, так что есть системный процесс?
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 2 Всего: 112 |
это, наверное, тот процесс, который запустил не юзер...
Т.е. все процессы запущенные от имени какого-то юзера - это пользовательские процессы, остальные - системные... -------------------- С уважением, г-н Посол. |
|||
|
||||
| DIMA.NET |
|
|||
![]() invisible fighter ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 26.1.2003 Репутация: нет Всего: нет |
Теоретически, я думаю, надо проверить имя пользователя, запустившего этот процесс. Когда жмешь Ctrl+Alt+Delete, в списке процессов, есть такие, у которых в имени пользователя написано SYSTEM - это системный процесс.
Вот это и надо проверять. Как это можне реализовать практически пока не знаю! |
|||
|
||||
| DIMA.NET |
|
|||
![]() invisible fighter ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 26.1.2003 Репутация: нет Всего: нет |
У меня ещё одна идея появилась:
когда мы получаем список всех процессов, мы можем увидеть полный путь к приложению. Я заметил, что все приложения, имеющие SYSTEM находятся в папке Windows/SYSTEM => можно делать поиск в полном пути к приложению, и если там присутсвует SYSTEM, то этот процесс СИСТЕМНЫЙ. Как вам эта идея? |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
DIMA.NET, ну вот не факт, мой сервис запускается под учеткой Local System, а лежит он там, где я пожелаю.
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| DIMA.NET |
|
|||
![]() invisible fighter ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 26.1.2003 Репутация: нет Всего: нет |
Вообще-то да...
Ладно будем что-нибудь ещё думать. А не знаешь, как можно узнать кем был запущен процесс |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 2 Всего: 112 |
Можно узнать через SID (Security Identificator) учетной записи, запустившей процесс. Как узнать SID ?
Наверняка можно проще, но рыться неохота, поэтому я попробовал через TSEnumerateProcesses. Пробовал еще GetSecurityInfo, но для системных процессов почему-то пишет, что отказано в доступе... (м.б. так определять ? нельзя сделать GetSecurityInfo - значит процесс системный ?). Узнав SID процесса можно узнать тип SID'а (SID_USE), если тип = SidTypeWellKnownGroup, то процесс запущен системой... -------------------- С уважением, г-н Посол. |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
p0s0l, но ведь TaskManager как-то опеределяет... надо посмореть, как в нем сделано...
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 2 Всего: 112 |
Baa - по крайней мере, то что показывает TaskManager (имена пользователей и группа, которую не показывает TaskManager) совпадает с тем, что получается с помощью WTSEnumerateProcesses (в прошлый раз пропустил буковку). Я просто прогаю на Дельфи, поэтому не выкладываю код... Если уж неполучится самим сделать, то переделаю под C, благо код там чуть больше страницы...
-------------------- С уважением, г-н Посол. |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Я вот чего думаю... а какие это у нас процессы запущены из-под LocalSystem? помойму токо сервисы(или я ошибаюсь?), тогда можно получить список всех сервисов и выбрать их них запущенные+юзер LocalSystem
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 2 Всего: 112 |
Вот результат WTSEnumerateProcess
Первый столбец - image процесса Второй - юзер Третий - domain Четвертый - тип юзера Пятый - SID юзера Как видно, системные процессы можно определить как по домену, так и по типу юзверя, помоему лучше по типу (5 = well known group, куда не может входить ниодин нормальный человеческий юзер...) -------------------- С уважением, г-н Посол. |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
А че у тя за винды? Для ентой функции ж Terminal Server нужен
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| DIMA.NET |
|
|||
![]() invisible fighter ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 26.1.2003 Репутация: нет Всего: нет |
Baa, в MSDN'е написано, что в WinXP, 2000 Professional такое работает.
|
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
DIMA.NET, просто в ХР вроде встроен Terminal Server, а в 2К - нет.
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |