大家帮我看下我的这个结束进程的函数 怎么在XP下没有问题 但是在2000下就不起作用了 ~~~
传入参数是进程名
bool CServerDemoDlg::KillApp(CString appName)
{
HANDLE   hSnapshot;   
hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);   
PROCESSENTRY32   pe;   
Process32First(hSnapshot,&pe);   
do   
{   
if(strcmp(pe.szExeFile,appName)==0)   
{   
HANDLE   hProcess;   
hProcess=OpenProcess(PROCESS_TERMINATE,FALSE,pe.th32ProcessID);   
if   (hProcess)   
{   
TerminateProcess(hProcess,0);//关闭进程   
}   
}   
}     
while(Process32Next(hSnapshot,&pe));   
CloseHandle(hSnapshot);
return true;}更奇怪的是在WIN2000下的DEBUG下调试也是正常的 ,执行RELEASE就不能结束进程了~~~~~

解决方案 »

  1.   


    杀进程要先将进程提升一个SeDebugPrivilege的权限才可以杀进程.检查你是否提升过这进程.再检查你进程运行在的权限,如果你在非管理员权限登陆的权限下想杀系统权限或管理员权限的进程,那是不可能的.
      

  2.   

    有些系统进程提升了Debug也不行,有人知道为什么吗?
      

  3.   

    操作系统必须的smss csrss也是不能被终止的否则。
      

  4.   


    因为有些进程是系统保护的.不是不能杀掉,是用正常方法杀不掉,而且这些进程如果被杀,系统会崩溃或蓝屏.象xp/2003中某几个svchost.exe进程,一被杀系统就会倒数准备重启.
      

  5.   

    可这个程序在WIN XP下是没有问题的啊  都是以ADM账号运行的  而且为什么只在RELEASE下才出现不能结束的问题 DEBUG没有问题