想通过OpenProcess获得进程句柄,然后杀掉该进程,但是出现错误

feidegengao 2012-12-26 03:04:22

OpenProcess(PROCESS_ALL_ACCESS, FALSE, id);
这个函数调用出错,GetLastError(是5):”拒绝访问“。 看的网上解决的办法是提升权限,
HANDLE hProcessToken = NULL;
BOOL b = SetPrivilege(hProcessToken, SE_DEBUG_NAME, TRUE);

HANDLE ProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, id);
if(ProcessHandle)
{
BOOL bTerminate = TerminateProcess(ProcessHandle, 0);
}
还是一样的错误?我该怎么解决呀?

...全文
270 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
feidegengao 2012-12-26
  • 打赏
  • 举报
回复
可以干掉QQ,但是干不掉我的
feidegengao 2012-12-26
  • 打赏
  • 举报
回复
引用 6 楼 arpnet99 的回复:
引用 1 楼 hfz8867879 的回复:http://bbs.csdn.net/topics/390326570 这么关不了么 这个帖子就是前几天问到的这个问题。我回的那个函数,我测试了是可以的。 你的是什么系统?W
Win7
这不是鸭头 2012-12-26
  • 打赏
  • 举报
回复
引用 7 楼 hfz8867879 的回复:
引用 6 楼 arpnet99 的回复:引用 1 楼 hfz8867879 的回复:http://bbs.csdn.net/topics/390326570 这么关不了么 这个帖子就是前几天问到的这个问题。我回的那个函数,我测试了是可以的。 你的是什么系统?W 我在1L回复的那个代码,也是从公司的程序里摘出来的,都能用
嗯。是的。以后有相关问题,都可以直接使用了。
九州剑王 2012-12-26
  • 打赏
  • 举报
回复
引用 6 楼 arpnet99 的回复:
引用 1 楼 hfz8867879 的回复:http://bbs.csdn.net/topics/390326570 这么关不了么 这个帖子就是前几天问到的这个问题。我回的那个函数,我测试了是可以的。 你的是什么系统?W
我在1L回复的那个代码,也是从公司的程序里摘出来的,都能用
这不是鸭头 2012-12-26
  • 打赏
  • 举报
回复
引用 1 楼 hfz8867879 的回复:
http://bbs.csdn.net/topics/390326570 这么关不了么
这个帖子就是前几天问到的这个问题。我回的那个函数,我测试了是可以的。 你的是什么系统?W
feidegengao 2012-12-26
  • 打赏
  • 举报
回复

DWORD id = FindAppProcessID(_T("SafeSite.exe"));
	if(id != -1)
	{
		if(AfxMessageBox(_T("SafeSite已在运行!\n请先关闭程序才能进行更新!\n如果选择确定将强行关闭程序!"),MB_OKCANCEL)==IDOK)
		{
			HANDLE hProcessToken = NULL;
			BOOL b = SetPrivilege(hProcessToken, SE_DEBUG_NAME, TRUE);
			
			HANDLE ProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, id);
			

			if(ProcessHandle)
			{
				BOOL bTerminate = TerminateProcess(ProcessHandle, 0);
			}
		}
	}
feidegengao 2012-12-26
  • 打赏
  • 举报
回复
DWORD CAppUpdateDlg::FindAppProcessID(CString strAppName)
{

	HANDLE handle=::CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
	PROCESSENTRY32 Info;
	Info.dwSize = sizeof(PROCESSENTRY32);
	if(::Process32First(handle,&Info))
	{
		do{
			CString ss=Info.szExeFile;
			if(!ss.CompareNoCase(strAppName))
			{
				::CloseHandle(handle);
				return Info.th32ProcessID;
			}
		}
		while(::Process32Next(handle,&Info));	
		::CloseHandle(handle);
	}
	return -1;
}
feidegengao 2012-12-26
  • 打赏
  • 举报
回复
引用 2 楼 arpnet99 的回复:
id获取的不对?
没有呀,id 6940,通过任务管理器看也是6940
这不是鸭头 2012-12-26
  • 打赏
  • 举报
回复
id获取的不对?
九州剑王 2012-12-26
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/390326570 这么关不了么

15,471

社区成员

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

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