如何判断一个进程是不是系统进程?(不通过文件名)

yangsiwei 2004-07-27 10:13:02
进程ID都知道的.
...全文
288 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
DentistryDoctor 2004-07-31
  • 打赏
  • 举报
回复
...
if(OpenProcessToken(hProcess,TOKEN_ALL_ACCESS,&hToken))
...
系统进程使用OpenProcessToken一般会失败。
也可以判断进程的父(祖先)进程的进程ID,系统进程一般是由(或者间接的)System Idle Process创建的,此进程的ID为0
NowCan 2004-07-31
  • 打赏
  • 举报
回复
这个说法不完全,System Idle Process的直接子进程是System进程,其ID为4(XP)或8(2000)。System的直接子进程才是他说的那些系统进程。更重要的是,系统进程如何定义?
tabris17 2004-07-31
  • 打赏
  • 举报
回复
引用:
======================================================================
系统进程一般是由(或者间接的)System Idle Process创建的,此进程的ID为0
======================================================================


那来的这种说法?
kvw3000 2004-07-30
  • 打赏
  • 举报
回复
今天有点累了,你看看先,不清楚明天继续
BOOL GetImageName(char* szImageName)
{
BOOL bResult;
DWORD dwTotal;
HANDLE hProcessSnap;
PROCESSENTRY32 ProcessEntry32;


dwTotal = 0;
bResult = TRUE;
hProcessSnap = NULL;

DebugPrivilege(TRUE);
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(hProcessSnap == INVALID_HANDLE_VALUE)
{
printf("CreateToolhelp32Snapshot for Process Error: %d\n",GetLastError());
bResult = FALSE;
}

ProcessEntry32.dwSize = sizeof(PROCESSENTRY32);
if(Process32First(hProcessSnap,&ProcessEntry32))
{
do
{
if(ProcessEntry32.th32ProcessID == 0)
{
continue;
}
else
{
strcpy(szImageName, ProcessEntry32.szExeFile); /***get the image name of process*/
}

}
while(Process32Next(hProcessSnap,&ProcessEntry32));
}
else
{
sprintf(szTempBuf, "ProcessEntry32First Error: %d",GetLastError());
AfxMessageBox(szTempBuf);
bResult = FALSE;
}


CloseHandle(hProcessSnap);
DebugPrivilege(FALSE);
return bResult;
}

BOOL DebugPrivilege(BOOL bEnable)
{
BOOL bResult = TRUE;
HANDLE hToken;
TOKEN_PRIVILEGES TokenPrivileges;

if(OpenProcessToken(GetCurrentProcess(),TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES,&hToken) == 0)
{
printf("OpenProcessToken Error: %d\n",GetLastError());
bResult = FALSE;
}
TokenPrivileges.PrivilegeCount = 1;
TokenPrivileges.Privileges[0].Attributes = bEnable ? SE_PRIVILEGE_ENABLED : 0;
LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&TokenPrivileges.Privileges[0].Luid);
AdjustTokenPrivileges(hToken,FALSE,&TokenPrivileges,sizeof(TOKEN_PRIVILEGES),NULL,NULL);
if(GetLastError() != ERROR_SUCCESS)
{
bResult = FALSE;
}
CloseHandle(hToken);

return bResult;
}
yelling 2004-07-27
  • 打赏
  • 举报
回复
也不一定,你可以查一下你用的操作系统的进程说明,网上很多的,还有专门的书
yhqs540 2004-07-27
  • 打赏
  • 举报
回复
得到安全结构,SYSTEM创建的就是
syy64 2004-07-27
  • 打赏
  • 举报
回复
关注;
呀 信 誉 值比较低呀。

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧