我正在尝试创建一个关闭所有进程的命令,但它对我不起作用。
#include "StdAfx.h"
int _tmain(int argc, _TCHAR* argv[])
{
// Get the list of process identifiers.
DWORD ExitCode;
DWORD aProcesses[1024], cbNeeded, cProcesses;
unsigned int i;
if (!EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) )
{
return 1;
}
// Calculate how many process identifiers were returned.
cProcesses = cbNeeded / sizeof(DWORD);
// exit each process.
for ( i = 0; i < cProcesses; i++ )
{
std::cout<<"end";
if( aProcesses[i] != 0 )
{
GetExitCodeProcess(OpenProcess(PROCESS_ALL_ACCESS,false,aProcesses[i]),&ExitCode);
ExitProcess(ExitCode);
}
}
}
另外,我收到了这些错误:
> 'check2.exe': Loaded 'C:\Users\Barak Shriky\Documents\Visual Studio 2010\Projects\check2\Debug\check2.exe', Symbols loaded.
'check2.exe': Loaded 'C:\Windows\SysWOW64\ntdll.dll', Symbols loaded (source information stripped).
'check2.exe': Loaded 'C:\Windows\SysWOW64\kernel32.dll', Symbols loaded (source information stripped).
'check2.exe': Loaded 'C:\Windows\SysWOW64\KernelBase.dll', Symbols loaded (source information stripped).
'check2.exe': Loaded 'C:\Windows\SysWOW64\msvcp100d.dll', Symbols loaded (source information stripped).
'check2.exe': Loaded 'C:\Windows\SysWOW64\msvcr100d.dll', Symbols loaded (source information stripped).
'check2.exe': Loaded 'C:\Windows\SysWOW64\psapi.dll', Symbols loaded (source information stripped).
The program '[3292] check2.exe: Native' has exited with code -858993460 (0xcccccccc).
有人可以帮我解决这个问题吗?
答案 0 :(得分:4)
1)您没有收到任何错误
2)ExitProcess正在结束您的流程。请阅读文档。
答案 1 :(得分:0)
让我觉得它工作正常 - 你只是没有为某些系统DLL安装符号,这是正常的。
当然,如果你真的将ExitCode
设置为某个东西 - 比如说ExitCode = 0xDeadBeef;
,那么你会得到一个更有意义的信息,说明为什么这个过程会退出 - 然后你会发现这是你的进程自杀了。
执行此操作似乎是一件非常糟糕的事情(假设它在首先关闭进程时“成功”),因为Windows中肯定存在大量进程,当停止时导致系统的其余部分没有工作得很好。例如,页面输入/输出过程,也用于加载/卸载可执行文件。在你杀死的进程中稍微有选择性可能会有用。
答案 2 :(得分:0)
请参阅下面的代码,我使用了终止进程...
// exit each process.
for ( i = 0; i < cProcesses; i++ )
{
std::cout<<"end";
if( aProcesses[i] != 0)
{
GetExitCodeProcess(OpenProcess(PROCESS_ALL_ACCESS,false,aProcesses[i]),&ExitCode);
TerminateProcess(aProcesses[i], ExitCode);
}
}
}