window进程
一、理解进程
- 从用户的角度上看:进程本质上讲是对计算机的一种抽象,而最基本的理解方式是,进程是一个应用程序(可以是组件)在内存中的一个运行实例。比如有个.exe文件,点击运行,那么在内存中就有占据了资源,他的一个实例,就是进程。如果你打开了两次这个程序,(假设没有单例化)那么内存中就有两个内存在跑,这就是两个进程。
- 从计算机的角度上看:进程是系统资源的调度。.exe (或者其他组件)在计算机的眼里,就是二进制文件,从加载那一刻开始,到从内存中清除时结束进程的生命周期,是计算机调度系统资源的一个最小单元。
- 从程序员的角度看:进程就是一个类的实例,仅仅是内核对象中的一个,可以管理整个程序的运行时候支配的所有资源,例如管理整个进程地址空间的内存资源。进程对象是内核对象中的一个,由系统生成,又系统清除,在进程启用过程中,开发人员可以使用其中的资源,完成自己想要的处理。
二、进程具有的一般属性
一个进程通常具有以下这些属性,在开发过程中可以利用以下一些属性做相应的一些处理,如父子进程传递参数,可以利用命令行参数,可以把一些敏感数据藏在环境变量块中等。
- 一个或多个线程资源
- 指向命令行参数的指针
- 指向环境变量的指针
- 独一无二的实例句柄(提供给用户的,内核对象不可直接访问)
- 进程的物理地址(存放磁盘路径)
- 进程当前目录(程序运行时所在目录)
- 运行权限(普通用户、管理员使用权限)
- 当前权限上下文(权限标志由令牌内核对象管理)
三、关于进程的一些常用操作
- 获取进程句柄:GetModuleFileName
- 获取进程的命令行参数:GetCommandLine
- 获取进程的环境变量:GetEnvironmentStrings
- 获取进程所在驱动器和目录:GetCurrentDirectory
- 获取进程当前运行目录:GetFullPathName
- 创建进程:CreateProcess
- 终止进程:ExitProcess、TerminateProcess
- 枚举系统中正在运行的进程:EnumProcesses