我正在尝试获取在用户(非管理员)会话上运行的所有进程的列表。在使用非管理员用户在 Windows 2008 SP2 中进行相同测试时,我发现下面的代码除了在管理员用户中运行的进程之外,还获取了属于该用户的所有进程。
有没有办法获取仅在该用户(非管理员)上运行的进程列表?
请在下面找到代码片段:
DWORD procID = 0;
FILE *fp;
PROCESSENTRY32 processInfo;
processInfo.dwSize = sizeof(processInfo);
HANDLE processesSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
if ( processesSnapshot == INVALID_HANDLE_VALUE )
{
return;
}
fp = _tfopen(_T("C:\\Process_List.txt") , _T("a+") );
if (fp == NULL) {
MessageBox(_T("Can't open File"));
return;
}
Process32First(processesSnapshot, &processInfo);
_ftprintf(fp, _T("\n Process: %s :: Process ID: %d"), processInfo.szExeFile, processInfo.th32ProcessID);
procID = processInfo.th32ProcessID;
if (procID == 0)
{
while ( Process32Next(processesSnapshot, &processInfo) )
{
_ftprintf(fp, _T("\n Process: %s :: Process ID: %d"), processInfo.szExeFile, processInfo.th32ProcessID);
}
}
fclose(fp);
CloseHandle(processesSnapshot);
提前致谢。
问候,
拉杰什