zoukankan      html  css  js  c++  java
  • 关于 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的进程操作安全防线)


    下面附代码下载实验代码


  • 相关阅读:
    【C语言入门教程】5.1 函数说明 与 返回值
    【C语言入门教程】4.10 综合实例
    【C语言入门教程】4.9 指向指针的指针
    【C语言入门教程】4.8 指针数组
    【C语言入门教程】4.7 指针的地址分配
    Windows 7 共享文件夹 给 VirtualBox 中的 Ubuntu 14
    【C语言入门教程】4.6 指针 和 数组
    Ubuntu 12/14 个性化配置
    【C语言入门教程】4.5 指针变量的定义与引用
    【C语言入门教程】4.4 指针 与 指针变量
  • 原文地址:https://www.cnblogs.com/jianggest/p/VS2008TerminateProcess.html
Copyright © 2011-2022 走看看