[英]Why cannot execute "taskkill" from cmd in c++?
我想在 c++ 代码中从 cmd 执行taskkill
。 我试过两个forms:
system("taskkill /IM 'example.exe' /F");
system("runas / profile / user:administrator \"taskkill /IM 'exmaple.exe' /F\"");
我的 c++ 程序也以管理员身份运行。 但是这些命令都没有执行成功。 问题是什么?
一个直接的解决办法是删除包含example.exe
的单引号 ( '
)。
例如,而不是:
system("taskkill /IM 'example.exe' /F");
使用:
system("taskkill /IM example.exe /F");
使用双引号( "
- 在这种情况下使用\
转义)也可以:
system("taskkill /IM \"example.exe\" /F");
然而——
正如@PepijnKramer 上面评论的那样,您可以使用专用的 windows API 函数来执行相同的操作。 这需要更多的代码,但提供了更好的错误控制和反馈。
以下是您需要做的事情的概述:
OpenProcess
API 打开进程以获取它的句柄,具有PROCESS_TERMINATE
访问权限(见下文)。获取 PID 然后通过名称获取进程句柄的示例: How can I get a process handle by its name in C++? .
TerminateProcess
API 的句柄来终止进程。 请注意,为了使用它:该句柄必须具有 PROCESS_TERMINATE 访问权限。
(这应该通过dwDesiredAccess
参数传递给OpenProcess
) 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.