Мне надо найти один процесс. Когда этот процесс создается, то он запускает еще один с таким же именем. Я посмотрел в диспетчер задач, там нужный мне процесс запускается от пользователя, а другой от Системы. Мне нужен именно тот процесс, который запустился от пользователя. Можно ли как то определить кто запустил процесс или есть способ проще?
Отслеживать
user194374
задан 7 авг 2016 в 9:57
HackMemory HackMemory
181 10 10 бронзовых знаков
ОС будем угадывать коллективно?
7 авг 2016 в 9:59
Виндус конечно!
7 авг 2016 в 10:01
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
#include #define MAX_NAME 256 BOOL GetLogonFromToken (HANDLE hToken, _bstr_t strdomain) < DWORD dwSize = MAX_NAME; BOOL bSuccess = FALSE; DWORD dwLength = 0; strUser = «»; strdomain = «»; PTOKEN_USER ptu = NULL; //Verify the parameter passed in is not NULL. if (NULL == hToken) goto Cleanup; if (!GetTokenInformation( hToken, // handle to the access token TokenUser, // get information about the token’s groups (LPVOID) ptu, // pointer to PTOKEN_USER buffer 0, // size of buffer if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) goto Cleanup; ptu = (PTOKEN_USER)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwLength); if (ptu == NULL) goto Cleanup; >if (!GetTokenInformation( hToken, // handle to the access token TokenUser, // get information about the token’s groups (LPVOID) ptu, // pointer to PTOKEN_USER buffer dwLength, // size of buffer goto Cleanup; >SID_NAME_USE SidType; char lpName[MAX_NAME]; char lpDomain[MAX_NAME]; if( !LookupAccountSid( NULL , ptu->User.Sid, lpName, dwSize, DWORD dwResult = GetLastError(); if( dwResult == ERROR_NONE_MAPPED ) strcpy (lpName, «NONE_MAPPED» ); else < printf(«LookupAccountSid Error %un», GetLastError()); >> else < printf( «Current user is %s\%sn», lpDomain, lpName ); strUser = lpName; strdomain = lpDomain; bSuccess = TRUE; >Cleanup: if (ptu != NULL) HeapFree(GetProcessHeap(), 0, (LPVOID)ptu); return bSuccess; > HRESULT GetUserFromProcess(const DWORD procId, _bstr_t strdomain) < HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION,FALSE,procId); if(hProcess == NULL) return E_FAIL; HANDLE hToken = NULL; if( !OpenProcessToken( hProcess, TOKEN_QUERY, CloseHandle( hProcess ); return E_FAIL; >BOOL bres = GetLogonFromToken (hToken, strUser, strdomain); CloseHandle( hToken ); CloseHandle( hProcess ); return bres?S_OK:E_FAIL; >
Отслеживать
ответ дан 7 авг 2016 в 10:02
22.1k 2 2 золотых знака 32 32 серебряных знака 52 52 бронзовых знака
Спасибо, работает!
7 авг 2016 в 10:36
- c++
- windows
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Как посмотреть недавно открытые файлы и папки в Windows 10
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Поймал майнер (nvvkdv.exe) — видеокарта на 90% в простое — fps в играх ушёл на дно!
Источник: ru.stackoverflow.com
Как узнать, какие ненужные процессы запущены в компьютере?
Чтобы увидеть список запущенных процессов нужно открыть окно диспетчера процессов, нажав одновременно три клавиши «Ctrl+Alt+Delete». Также ещё можно открыть окно запущенных служб, для этого правой кнопкой мышки кликаем по ярлыку «Мой компьютер», выбираем строчку «Управление» («Manage», если англ. версия системы), в появившемся окне есть строчка «Службы и приложения», а в ней будет надпись «Службы», откроется большой список.
Ну а дальше придётся решать какой процесс или какая служба для пользователя нужна, а какая нет. Вот это и есть самое сложное, потому как для этого придётся читать непонятные описания каждого процесса или службы. Можно прочитать такие описания в самой системе или поискать в Интернете. В Интернете конечно лучше, ибо там просто напросто по людски объяснят, что можно считать ненужным, а чего трогать не следует.
автор вопроса выбрал этот ответ лучшим
Источник: www.bolshoyvopros.ru
Как посмотреть процессы командной строки в диспетчере задач
В данной статье показаны действия, с помощью которых можно посмотреть процессы (аргументы) командной строки в диспетчере задач операционной системы Windows 10, Windows 8.1.
Если вы продвинутый пользователь, то вы вероятно используете диспетчер задач в Windows на регулярной основе для проверки производительности, служб, процессов.
Также при необходимости можно просмотреть аргументы командной строки, выполняемые приложением, процессом или службой.
Аргумент командной строки — это информация, передаваемая операционной системой в программу при её запуске, и таким образом можно узнать путь к приложению и другие данные выполняемые каким-либо процессом.
Как посмотреть процессы командной строки в диспетчере задач
Чтобы посмотреть процессы командной строки, откройте диспетчер задач и затем щелкните правой кнопкой мыши в имени любого столбца и в открывшемся контекстном меню выберите пункт Командная строка .
После этого в диспетчере задач появится столбец Командная строка , в котором вы увидите аргументы командной строки того или иного запущенного приложения, службы или процесса.
Источник: winnote.ru