Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
2 / 2 / 0
Регистрация: 22.09.2012
Сообщений: 202

Определение вида процесса (служба или обычный процесс)

11.11.2013, 15:49. Показов 1392. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет, помогите пож. определить вид процесса. Гуглил, но ответа так и не нашел

Добавлено через 6 минут
не нужен код, просто хотелось бы узнать, как можно определить это
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.11.2013, 15:49
Ответы с готовыми решениями:

В GDI+ возникла ошибка общего вида или процесс занят
Bitmap printscreen = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height) Graphics graphics...

Скрытие процесса в диспетчере задач или неубиваемый процесс Windows 10
Помогите сделать скрытие процесса в диспетчере задач Windows 10

Разработать три процесса: процесс-сервер и два процесса-клиента
Требуется разработать три процесса, запускаемые из командной строки UNIX: процесс-сервер, запускаемый в оперативном режиме, и два...

5
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
11.11.2013, 15:56
Открыть токен процесса, посмотреть, есть ли в нем SID S-1-5-6 (Service).
Если есть - это служба.
1
2 / 2 / 0
Регистрация: 22.09.2012
Сообщений: 202
11.11.2013, 16:44  [ТС]
спасибо, сейчас попробую

Добавлено через 26 минут
Я в правильном направлении двигаюсь? и не нашел как мне сравнить с SID S-1-5-6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
bool ProcessesHandler :: someFunction(DWORD processId) {
    HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, NULL, processId);
    HANDLE hToken;
    DWORD dwSize = 0;
    PTOKEN_GROUPS pGroupInfo;
 
    OpenProcessToken(hProcess, TOKEN_ALL_ACCESS, &hToken);
     // Call GetTokenInformation to get the buffer size.
    GetTokenInformation(hToken, TokenGroups, NULL, dwSize, &dwSize);
 
    // Allocate the buffer.
    pGroupInfo = (PTOKEN_GROUPS) GlobalAlloc( GPTR, dwSize );
 
    // Call GetTokenInformation again to get the group information.
 
    if(! GetTokenInformation(hToken, TokenGroups, pGroupInfo, dwSize, &dwSize ) ) 
        return false;
    
    for (DWORD i = 0; i < pGroupInfo->GroupCount; i++) {
        if (pGroupInfo->Groups[i].Sid) // здесь не знаю как сравнить с SID 1-5-6
    }
 
    return false;
}
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
11.11.2013, 17:02
Для проверки, входит ли SID в токен, используйте функцию CheckTokenMembership.
1
2 / 2 / 0
Регистрация: 22.09.2012
Сообщений: 202
11.11.2013, 18:17  [ТС]
Попробовал, но всегда возвращает false:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
bool ProcessesHandler :: someFunction(DWORD processId) {
    HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, NULL, processId);
    HANDLE hToken;
    DWORD dwSize = 0;
    PTOKEN_GROUPS pGroupInfo;
 
 
    SID_IDENTIFIER_AUTHORITY SIDAuth = SECURITY_NT_AUTHORITY;
    PSID pSID = NULL;
 
    OpenProcessToken(hProcess, TOKEN_ALL_ACCESS, &hToken);
     // Call GetTokenInformation to get the buffer size.
    GetTokenInformation(hToken, TokenGroups, NULL, dwSize, &dwSize);
 
    // Allocate the buffer.
    pGroupInfo = (PTOKEN_GROUPS) GlobalAlloc( GPTR, dwSize );
 
    // Call GetTokenInformation again to get the group information.
 
    if(! GetTokenInformation(hToken, TokenGroups, pGroupInfo, dwSize, &dwSize ) ) 
        return false;
    
    if(! AllocateAndInitializeSid(&SIDAuth, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, &pSID) ) {      
        return FALSE;
    }
    BOOL result;
    for (DWORD i = 0; i < pGroupInfo->GroupCount; i++){
         (CheckTokenMembership(hToken, pGroupInfo->Groups[i].Sid, &result));
             if (result)
                return true;
    }
 
    if (pSID)
        FreeSid(pSID);
    if ( pGroupInfo )
        GlobalFree( pGroupInfo );
 
    return false;
}
Вроде так работает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
bool ProcessesHandler :: someFunction(DWORD processId) {
    HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, NULL, processId);
    HANDLE hToken;
    DWORD dwSize = 0;
    PTOKEN_GROUPS pGroupInfo;
 
 
    SID_IDENTIFIER_AUTHORITY SIDAuth = SECURITY_NT_AUTHORITY;
    PSID pSID = NULL;
 
    OpenProcessToken(hProcess, TOKEN_ALL_ACCESS, &hToken);
     // Call GetTokenInformation to get the buffer size.
    GetTokenInformation(hToken, TokenGroups, NULL, dwSize, &dwSize);
 
    // Allocate the buffer.
    pGroupInfo = (PTOKEN_GROUPS) GlobalAlloc( GPTR, dwSize );
 
    // Call GetTokenInformation again to get the group information.
 
    if(! GetTokenInformation(hToken, TokenGroups, pGroupInfo, dwSize, &dwSize ) ) 
        return false;
    
    if(! AllocateAndInitializeSid(&SIDAuth, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, &pSID) ) {      
        return FALSE;
    }
    BOOL result;
    for (DWORD i = 0; i < pGroupInfo->GroupCount; i++){
        if (EqualSid(pGroupInfo->Groups[i].Sid,pSID)) {         
            FreeSid(pSID);          
            GlobalFree( pGroupInfo );
            return true;    
        }
    }
    if (pSID)
        FreeSid(pSID);
    if ( pGroupInfo )
        GlobalFree( pGroupInfo );
 
    return false;
}
Но не знаю как проверить все ли правильно
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
11.11.2013, 18:19
Цитата Сообщение от Kreativ Посмотреть сообщение
Но не знаю как проверить все ли правильно
Проверку ошибок сделайте нормальную.
В смысле - проверять значения, которые возвращаются функциями.
А не просто подразумевать, что они всегда завершаются успешно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.11.2013, 18:19
Помогаю со студенческими работами здесь

Есть процесс A и дочерний процесс B, который находит хэндл родительского процесса A. И этот хэндл в разных случаях РАЗНЫЙ! Почему?
Друзья! Вот код A.exe, суть которого просто стать родительским для B.exe и висеть в системе. #include &lt;stdio.h&gt; #include...

Проверка, запущена ли программа (служба) + чтение памяти процесса
Доброго времени суток. Спасибо всем кто, смотрели мою предыдущую тему. (спасибо нажал в ответ:)) первая часть темы Есть служба...

Служба: добавить цикл проверки процессов и если процесс найден убить.
Приветствую всех! помогите если можете. У меня есть служба, в нее нужно добавить цикл проверки процессов и если процесс найден убить. За...

Построить три вида фигуры. На месте вида спереди и вида слева совместить часть вида с частью разреза

Построить три вида фигуры. На месте вида спереди и вида слева совместить часть вида с частью разреза - AutoCAD
Меня уже совсем выносит. Правильно ли я делаю?.. Не могу представить нормально вид слева. Что делаю не так? До второй фигуры даже и не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru