能力值:
( LV2,RANK:10 )
|
-
-
2 楼
不会吧。。。。。。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
调试运行的?还是权限问题?
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
就是不知道什么问题啊。
我先创建了两个匿名管道,分别跟cmd的输入和输出关联,
然后就CreateProcess了cmd进程,
然后想杀掉它,发现在任务管理器的进程列表里还有这个cmd。
是不是匿名管道的问题啊?
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
创建了2个 杀掉1个?
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
我先创建了一个cmd进程,代码如下:
SECURITY_ATTRIBUTES sa;
HANDLE hRead,hWrite;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
if (!CreatePipe(&hRead,&hWrite,&sa,0))
{
ShowMessage("Error On CreatePipe()");
return;
}
STARTUPINFO si;
PROCESS_INFORMATION pi;
si.cb = sizeof(STARTUPINFO);
GetStartupInfo(&si);
si.hStdError = hWrite;
si.hStdOutput = hWrite;
si.wShowWindow = SW_HIDE;
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
if (!CreateProcess(NULL,"cmd.exe" ,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi))
{
printf("createProcess fail!\n");
return -1;
}
然后在另一个地方杀掉它:
TerminateProcess(pi.hProcess,0);
WaitForSingleObject(pi.hProcess, INFINITE);
printf("kill OK\n");
执行时,打印了kill OK ,但是cmd.exe还在任务管理器的进程列表里。
请问这是怎么回事?
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
CloseHandle(pi.hProces);
CloseHandle(pi.hThread);
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
这个我也试了,不行。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
有可能是挂在了设备驱动上了!
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
刚简化了程序,发现的确是创建了2个,杀掉了1个。
但是我只运行了一次CreateProcess啊,怎么会创建了2个呢?
谢谢。
|
能力值:
( LV4,RANK:50 )
|
-
-
11 楼
自身不是用cmd起来的?
你直接运行试试.别用IDE运行
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
我在cmd下运行的,没用IDE运行,此时任务管理器进程列表是1个cmd
执行完CreateProcess后,发现任务管理器进程列表是3个cmd
然后执行TerminateProcess后,发现还剩2个cmd进程
|
能力值:
( LV4,RANK:50 )
|
-
-
13 楼
编译出来 OD加载 断点createprocess
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
已经通过查找进程pid将它杀掉了。
谢谢白玉箫和大家的提示。
|
|
|