一个exe可执行文件的生和死(运行原理).pdfVIP

一个exe可执行文件的生和死(运行原理).pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
写在前面: 最近在研究一个VC 界面库 DuiLib,在细读它的源码时遇到些问题,比如 它的界面是如何绘制上去的,底层操作是如何实现的,就是 CreateWindow 和 ShowWindow 又是如何实现的,也不得而知,因此我想有必要重新认识下Win32 应用程序的启动/运行原理才好。 如题所述,本文讲的的Windows 环境下exe可执行文件的运行原理,这里 面涉及的知识很多,需要读者对Windows 操作系统(如注册表、进程、线程、 PE Windows c++ 内存管理、 文件格式等)、 编程(本文使用 语言)等有所了解。 本文试图以通俗易懂的语言描述,让更多的人看的懂,从运行原理上对程序的运 行有个好的了解。 文章安排方面,我这里是以大家都懂的main / WinMain 函数执行前,执行时, 执行后分为三个部分:exe程序的初始化;主函数的运行过程;程序收尾工作 PS:本人的技术也是有限的,文章中难免会有错误疏漏之处,还请各位高手批 评指正。转载请注明出处,谢谢 本文使用的例子444.exe程序下载地址: 1 下载地址 : 1/file/D4/53/tzydH05zcHTmkwTlAE44iue6lUk204.zip?key=n5f6 a61fc1a1fb190d2b250dc7cd74e2ce2082ccc1b4d4178euid=1035291token=l1az8k lrmhi8bwxl49201cxedjdir=%2Fname=xunlei.zip 下载地址2: http://115.com/file/clg0o6il# 一、exe程序的初始化 一、exe程序的初始化 一一、、eexxee程程序序的的初初始始化化 打开一个软件是如此简单,双击软件的图标就是了!但你是否想过,当你双 击那个图标时,系统都做了哪些工作?为什么双击图标软件就运行起来了? 没错,就是Shell(以Explorer.exe进程实现)。当你启动电脑进入桌面时, 系统创建Explorer.exe进程,而其它的进程,可以说都是Explorer.exe的子进 程,因为它们都是由Explorer.exe进程创建的。也就是说,当你双击图标时Shell 会侦测到这个动作,注册表中有相关的项保存着双击操作的信息,如exe文件关 联、启动exe的Shell是哪个。 注册表中保存的exe文件关联信息 打开一个exe时指定的参数信息 指定启动exe程序的Shell 我们看到,启动exe文件指定的Shell 就是Explorer.exe 啦。因此,我们应该 exe Explorer.exe 知道了,双击 文件图标时 进程的一个线程会侦测到这个操作, 它根据注册表中的信息取得文件名(根据%1这个参数),然后Explorer.exe 以这 个文件名调用CreateProcess 函数,这个函数做了很多工作。 CreateProcess 函数的定义是这样的: BOOLWINAPICreateProcess( __in_opt LPCTSTR lpApplicationName, __inout_opt LPTSTR lpCommandLine, __in_opt LPSECURITY_ATTRIBUTES lpProcessAttributes, __in_opt LPSECURITY_ATTRIBUTES lpThreadAttributes, __in BOOLbInheritHandles, __in DWORD dwCreationFlags, __in_opt LPVOID lpEnvironment, __in_opt LPCTSTR lpCurrentDirectory, __in LPSTARTUPINFO lpStartupInfo, __out LPPROCESS_INFORMATION lpProcessInformation ); 此函数的具体信息和用法在MSDN

文档评论(0)

xiaofei2001128 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档