微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c – 使用TerminateProcess终止“mstsc.exe”进程时出现错误代码(5)访问被拒绝

我使用CreateProcess()函数使用“mstsc.exe”启动rdp客户端应用程序.之后,我想终止它,所以我使用TerminateProcess()函数,但它失败,错误代码为5.如果我用“notepad.exe”替换“mstsc.exe”,则终止函数有效.代码如下:

TCHAR szCommandLine[] = TEXT("mstsc.exe");
STARTUPINFO si = {sizeof(si)};
PROCESS_informatION pi;
BOOL bResult = CreateProcess(NULL, szCommandLine, NULL, NULL,
    FALSE, norMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi);
::Sleep(3000);
if (TerminateProcess(pi.hProcess, 0) == 0) {
printf("Failed: %d", GetLastError());
}

任何人都可以帮助解释并解决它吗?
我观察到的是,返回的pid的pid与在taksmanager或“Process Explorer”中观察到的进程“mstsc.exe”的id不同.

解决方法:

您的主机进程是32位还是在64位Windows上运行?

如果是这样,你正在调用32位mstsc并且它产生一个64位版本,因此产生不同的PID.查看this thread

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐