关于 TerminateProcess函数 在c++的进程中的学习而发现VS2008的编译安全问题

关于 TerminateProcess函数 c++的进程中的学习

       之前一段时间自己的机器总是有一些用不到的进程随机器启动,查了启动项没有发现(不过现在已经知道是在“服务”里面)。而碰巧刚学了c++windows程序设计,就想自己写个程序,将自己每次相关掉的进程名称都写进去,每次运行下就可以关掉。

       看了下书上的代码,已经有了差不多的代码了,一个是列出进程的列表的,一个是通过进程的ID来结束进程。因为考虑到进程ID的随机性,就想通过进程名称的对比,再找出PID来进行进程的结束工作。

       根据书上的例子,将第一个列进程的代码拿出来用,可以列出进程。书上用的是Process32First 和一个Process32Next的一个循环。

       到了第二步,先将书上的通过PID来结束进程的代码,运行发现不能按要求,来运行,可是到了学校的机房,却可以运行,学校机房用的是VC6.0的编译器,而我用的VS2008 。难道这个和平台有关?

       查了MSdn文档说是要

Client

Requires Windows Vista, Windows XP, Windows 2000 Professional, Windows NT Workstation, Windows Me, Windows 98, or Windows 95.

Server

Requires Windows Server 2008, Windows Server 2003, Windows 2000 Server, or Windows NT Server.

Header

Declared in Winbase.h; include Windows.h.

Library

Use Kernel32.lib.

DLL

Requires Kernel32.dll.

 

 

       查看了我的VS 的设置,里面是有Kernel.lib

       问题也就一直得不到解决了,尝试了设断点的调试,发现它在前一步::OpenProcess

 这里就没有正常的运行了,无论填入何种进程ID 一律返回

       看来是这个OpenProcess的问题。(后来)

      

       带着疑问,我要在机房的VC6.0 下面做了调试,可依然是可以成功的结束掉指定的进程的。那么结果只有一种—VS2008 安全性较高,一些对进程的操作,它不会让你随便运行。

       可是又有新疑问了,那么想要突破这个安全的防线 我该怎么做呢?

       敬请期待自己的下一步的突破。(突破VS的进程操作安全防线)


下面附代码下载实验代码


原文地址:https://www.cnblogs.com/jianggest/p/VS2008TerminateProcess.html