李sir_Blog

博客园 首页 联系 订阅 管理

2010年6月4日

摘要: Note 0:了进程实际是由两个组件组成的:一个进程内核对象和一个地址空间.类似地,线程也由两个组件组成:一个是线程的内核对象,操作系统用它管理线程.内核对象还是系统用来存放线程统计信息的地方.一个线程堆栈,用于维护线程执行时所需的所有函数参数和局部变量.Note 1:进程是有惰性的.进程从来不执行任何东西,它只是一个线程的容器.线程必然是在某个进程的上下文中创建的,而且会在这个进程内部"终其一生... 阅读全文
posted @ 2010-06-04 20:27 李sir 阅读(698) 评论(0) 推荐(0)

摘要: Note 0:Windows提供了一个作业(job)内核对象,它允许你将进程组合在一起并创建一个"沙箱"来限制进程能够做什么.最好将作业对象想象成一个进程容器.但是,即使作业中只包含一个进程,也是非常有用的,因为这样可以对进程施加平时不能施加的限制.Note 1:以下的StartRestrictedProcess函数将一个进程放入一个作业中,以限制此进程具体能够做哪些事情,如下所示:void St... 阅读全文
posted @ 2010-06-04 19:52 李sir 阅读(2052) 评论(0) 推荐(0)

摘要: Note 1:在Windows Vista中,系统DLLs是在进程地址空间的随机地址加载的.所以,不要像在Windows XP中那样将PEB的地址硬编码为0x7ffdf000.相反,你需要调用NtQueryInformationProcess,并传递ProcessBasicInformation作为参数.别忘了,在一个版本的Windows中发现的未文档化的细节可能在下一个版本中发生改变.Note ... 阅读全文
posted @ 2010-06-04 19:45 李sir 阅读(375) 评论(0) 推荐(0)

摘要: Note 1:一个线程可以调用以下两个函数来获取和设置其进程的当前驱动器和目录:DWORD GetCurrentDirectory(DWORD cchCurDir,PTSTR pszCurDir);BOOL SetCurrentDirectory(PCTSTR pszCurDir);注意WinDef.h文件中被定义为260的常量MAX_PATH是目录名称或文件名称的最大字符数.所以在调用GetCu... 阅读全文
posted @ 2010-06-04 17:54 李sir 阅读(478) 评论(0) 推荐(0)

摘要: Note 1:以前版本的Windows设计的一些应用程序之所以在Windows Vista上不能正常工作,就是因为在实现这些程序时,没有充分考虑安全性.假定一个应用程序在启动时要从一个注册表子项中读取一些数据.正确的做法是调用RegOpenKeyEx,向其传入KEY_QUERY_VALUE,从而指定查询子项数据的权限.然而许多应用程序对安全性没有任何考虑.有的软件开发人员还是按照老习惯,在调用Re... 阅读全文
posted @ 2010-06-04 17:48 李sir 阅读(344) 评论(0) 推荐(0)