玩过Win7 64位的请进 100分

meyers_007 2011-12-03 08:18:03
写了个杀掉进程的代码。主要使用的是遍历进程,使用TerminateProcess杀掉进程的方式。有个很奇怪的问题。在XP下没问题,可以杀掉进程。但是在Win7 32 sp1 和Win7 64位下,调用TerminateProcess成功,但是没有杀掉想要杀掉的进程。求解释???
...全文
213 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
meyers_007 2011-12-05
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 qwer_boo 的回复:]

100分......明明是40分
[/Quote]
比较着急,没有注意,不好意思。现在加上去了。
meyers_007 2011-12-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 keiy 的回复:]

如果没记错,杀进程的方法不至TerminateProcess一种,另外,不是所有进程能被中止的
我的就是win7 64位系统,用以下程序,可以终止calc.exe(计算器)
C/C++ code

#include <windows.h>
#include <tlhelp32.h>

void KillProgram(LPCSTR ExeName)
{
L……
[/Quote]
我主要是想在另一个进程中杀掉自己先前创建的一个进程。处理方法和你的差不多,但是在Win7 64位下面不知道怎么的调用TerminateProcess成功,但是就是没有杀掉它,很郁闷。
qwer_boo 2011-12-04
  • 打赏
  • 举报
回复
100分......明明是40分
duke56 2011-12-04
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 pathuang68 的回复:]

帮顶!
[/Quote]

meyers_007 2011-12-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xunxun1982 的回复:]

提权了?
[/Quote]
提权后依然不行。。。
xunxun 2011-12-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 keiy 的回复:]

另一简单的方法,直接调用taskkill
C/C++ code

#include <stdlib.h>
int main()
{
system("taskkill /F /IM calc.exe /T");
}
[/Quote]
我看了你上一个也要说这个呢
柯本 2011-12-03
  • 打赏
  • 举报
回复
另一简单的方法,直接调用taskkill

#include <stdlib.h>
int main()
{
system("taskkill /F /IM calc.exe /T");
}
柯本 2011-12-03
  • 打赏
  • 举报
回复
如果没记错,杀进程的方法不至TerminateProcess一种,另外,不是所有进程能被中止的
我的就是win7 64位系统,用以下程序,可以终止calc.exe(计算器)

#include <windows.h>
#include <tlhelp32.h>

void KillProgram(LPCSTR ExeName)
{
LPCSTR File;
HANDLE hProcessSnap;
PROCESSENTRY32 pe32;

if (!ExeName || !ExeName[0])
return;
File = strrchr(ExeName, '\\ ');
if (File!=0) ExeName = File+1;
hProcessSnap = CreateToolhelp32Snapshot(
TH32CS_SNAPPROCESS, 0);
if (hProcessSnap == (HANDLE)-1) return;

memset(&pe32, 0, sizeof(pe32));
pe32.dwSize = sizeof(PROCESSENTRY32);
if (Process32First(hProcessSnap, &pe32))
{
do {
File = strrchr(pe32.szExeFile, '\\ ');
File = File? File+1 : pe32.szExeFile;
if (strcmpi(File,ExeName)==0) {
TerminateProcess(OpenProcess(
PROCESS_ALL_ACCESS,0,pe32
.th32ProcessID), 0);
break;
}
}
while(Process32Next(hProcessSnap,&pe32));
}
CloseHandle(hProcessSnap);
}
int main()
{
KillProgram("calc.exe");
}

开发系统
CB2010(32位)及VS2008(64位)都没问题

机智的呆呆 2011-12-03
  • 打赏
  • 举报
回复
俺用win7 64系统快两年
xunxun 2011-12-03
  • 打赏
  • 举报
回复
提权了?

64,677

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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