Код C++ для печати всего процесса с идентификатором сеанса
У меня есть код c++ для отображения всего процесса с идентификатором сеанса , но этот код не работает идеально на некоторых машинах Windows xp, из-за методов ProcessIdToSessionId() минимальная поддержка-Windows Vista. У кого-нибудь есть предложения о том, как это сделать для Windows XP. Вот мой код
Что я уже пробовал:
#include <cstdio> #include <windows.h> #include <tlhelp32.h> #include <iostream> int _tmain(int argc, _TCHAR* argv[]) { PROCESSENTRY32 entry; entry.dwSize = sizeof(PROCESSENTRY32); HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL); std::wstring wsProcessName; DWORD dwSessionId,dwPid,dwErr; if (Process32First(snapshot, &entry) == TRUE) { while (Process32Next(snapshot, &entry) == TRUE) { dwPid = entry.th32ProcessID; wsProcessName = entry.szExeFile; if(!ProcessIdToSessionId(dwPid,&dwSessionId)) { dwErr = GetLastError(); std::wcout<<"Error " << wsProcessName.c_str()<<"\t"<<entry.th32ProcessID<<"\t"<<entry.th32ModuleID<<"\t"<<dwErr<<"\n"; } else std::wcout<<wsProcessName.c_str()<<"\t"<<entry.th32ProcessID<<"\t"<<dwSessionId<<"\n"; dwSessionId = NULL; dwErr = NULL; } } CloseHandle(snapshot); return 0; }
Richard MacCutchan
Если функция не поддерживается в Windows XP, то она не поддерживается и в Windows XP. Нет никакого решения.
MarshalS
если этот API не поддерживается в windows XP, я спросил, есть ли другие способы его найти.