如何从 VC 中终止进程++

发布于 2024-08-31 12:04:02 字数 83 浏览 8 评论 0原文

我正在使用 VC++ 编译器,我想知道如何终止进程。有没有什么功能.

我尝试使用 TerminateProcess();但我做不到...

Am using VC++ compiler i want to know how to kill a process. is there any functions.

i tried with TerminateProcess(); but i couldn't do...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

以可爱出名 2024-09-07 12:04:02

我不知道你到底想做什么,但你必须知道 TerminateProcess() 只是杀死进程而不给他正确关闭的机会。

您可能希望首先向应用程序发送一条 WM_CLOSE 消息,然后,如果它没有响应,则使用 TerminateProcess() 终止它。

多布斯博士在此处发表了一篇精彩文章(带有示例)。

您可能想看一下。

I don't know exactly what you want to do but you have to know TerminateProcess() just kills the process without giving him a chance to close properly.

You might want first to send a WM_CLOSE message to the application and then, if it doesn't respond, kill it with TerminateProcess().

Dr Dobbs has a great article (with samples) just here.

You might want to take a look.

烟柳画桥 2024-09-07 12:04:02

只是为了确保您做得正确:

  • 使用 OpenProcess 从进程 ID 获取进程句柄(请求 PROCESS_TERMINATE 访问权限)
  • 调用 TerminateProcess这个句柄

这种方法究竟出了什么问题?

Just to make sure you did it right:

  • Use OpenProcess to get the process handle from a process ID (requesting PROCESS_TERMINATE access rights)
  • Call TerminateProcess on this handle

What exactly went wrong with this approach?

止于盛夏 2024-09-07 12:04:02

TerminateProcess 需要 PROCESS_TERMINATE 权限。如果您从 OpenProcess 获取进程句柄,则 dwDesiredAccess 参数必须至少包含 PROCESS_TERMINATE

如果您尝试终止提升的进程,那么您的应用程序(执行终止操作的应用程序)也必须提升。

您从 GetLastError() 收到什么错误代码?

TerminateProcess requires the PROCESS_TERMINATE right. If you're getting the process handle from OpenProcess, then the dwDesiredAccess parameter must at least include PROCESS_TERMINATE.

If you're trying to kill an elevated process, then your app (the app doing the killing) must also be elevated.

What error code are you getting from GetLastError()?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文