经常使用程序结束进程,有时候会遇到结束进程失败的情况,不知道该怎么办了?希望哪位高手看到给个解决的办法。
在VC编写PC端程序,可以通过获取管理权限来取得结束进程的权限,PDA上不知道如何做.

这是使用的代码。
BOOL PDATerminateProc(CString ProcToKill)
{
 int cntTerminate=0;
 HANDLE hSnapshot=INVALID_HANDLE_VALUE;
 PROCESSENTRY32 procEntry;
 procEntry.dwSize=sizeof(PROCESSENTRY32);
 CString szProcName;
 hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
 if (hSnapshot)
 {
  if (Process32First(hSnapshot,&procEntry))
  {
   szProcName=procEntry.szExeFile;
   if (!szProcName.CompareNoCase(ProcToKill))
   {
    HANDLE hProcess = OpenProcess(
     PROCESS_TERMINATE,FALSE,procEntry.th32ProcessID);
    if(hProcess)
    {
       if(!TerminateProcess(hProcess,0))
       {
       CString strError;
       strError.Format(_T("TerminateProcess() fail\n Error:%d"),GetLastError());
       MessageBox(NULL,strError,L"error",MB_OK|MB_ICONINFORMATION);
       }
       cntTerminate++;
    }
    else
    {
     CString strError;
     strError.Format(_T("OpenProcess() fail\n Error:%d"),GetLastError());
     if(GetLastError()==ERROR_ACCESS_DENIED)
        strError=_T("error!")+strError;
     MessageBox(NULL,strError,L"error",MB_OK|MB_ICONINFORMATION);
    }
   }
  }
  while(Process32Next(hSnapshot,&procEntry))
  {
   szProcName=procEntry.szExeFile;
   if (!szProcName.CompareNoCase(ProcToKill))
   {
    HANDLE hProcess = OpenProcess(
     PROCESS_TERMINATE,FALSE,procEntry.th32ProcessID);
    if(hProcess)
    {
       if(!TerminateProcess(hProcess,0))
       {
       CString strError;
       strError.Format(_T("TerminateProcess() fail\n Error:%d"),GetLastError());
       MessageBox(NULL,strError,L"error",MB_OK|MB_ICONINFORMATION);
       }
    }
    else
    {
     CString strError;
     strError.Format(_T("OpenProcess() fail\n Error:%d"),GetLastError());
     if(GetLastError()==ERROR_ACCESS_DENIED)
        strError=_T("Error!")+strError;
     MessageBox(NULL,strError,L"error",MB_OK|MB_ICONINFORMATION);
    }
    if (cntTerminate++>=1)
    {
     break;
    }
   }//else MessageBox(NULL,procEntry.szExeFile,L"debug",MB_OK|MB_TOPMOST);
  }
//  CloseToolhelp32Snapshot(hSnapshot);
  CloseHandle(hSnapshot);
 }
 return (cntTerminate>0);
}

返回的错误是ERROR 5:拒绝访问.