利用快照
HANDLE hProcessSnap=NULL;
PROCESSENTRY32 pe32={0};
hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//快照
if(hProcessSnap==INVALID_HANDLE_VALUE)
{
return;
}
pe32.dwSize=sizeof(PROCESSENTRY32);
if(Process32First(hProcessSnap,&pe32))
返回的pe32结构体中的pe32.th32ProcessID为0
pe32.szExeFile有名字
HANDLE hProcessSnap=NULL;
PROCESSENTRY32 pe32={0};
hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//快照
if(hProcessSnap==INVALID_HANDLE_VALUE)
{
return;
}
pe32.dwSize=sizeof(PROCESSENTRY32);
if(Process32First(hProcessSnap,&pe32))
返回的pe32结构体中的pe32.th32ProcessID为0
pe32.szExeFile有名字
进程ID为0 就得不到它的用户名了
hProcessSnap=::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
ProMore = ::Process32First(hProcessSnap,&pe32);
while (ProMore)
{
if (!strcmpi(BlackList[ProNum],pe32.szExeFile))
{
char str[30]={0};
char ProPath[MAX_PATH];
DWORD buffNeeded;
HMODULE hModle;
HANDLE hProcess=::OpenProcess(PROCESS_ALL_ACCESS,FALSE,pe32.th32ProcessID);
if (hProcess)
{
char NameBuf[100]={0};
if (GetProcessAuth(pe32.th32ProcessID,NameBuf))得到进程用户名,但是有些得不到~~~
这里发现 OpenProcess 打开系统进程会失败 ID为0
HANDLE hProcess=OpenProcess(PROCESS_QUERY_INFORMATION,FALSE,dwID);
打开有些进程
OpenProcessToken(hProcess,TOKEN_QUERY,&hToken)这句会失败