网站大量收购闲置独家精品文档,联系QQ:2885784924

枚举本地-远程NT系统进程.doc

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
枚举本地-远程NT系统进程

枚举本地-远程NT系统进程 枚举本地-远程NT系统进程   Windows2000中有个工具taskmgr.exe就可以比较详细的查看当前系统进程信息,但是那是Windows GUI程序,有时候是不是觉得命令行下的东西更方便呢?其实已经有不少命令行下的枚举系统进程的工具了,M$的Resource Kit中好象也有,但去了解他们是怎么实现的,自己动手做出来,是不是更有意思呢:)   进程通常被定义为一个正在运行的程序的实例,它由两部分组成:   1操作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方。   2地址空间。它包含所有可执行模块或DLL模块的代码和数据。它还包含动态内存分配的空间,如线程的堆栈和堆分配空间。   枚举系统进程的实现方法大概有四种,其中有一种可以用来枚举远程NT系统的进程,前提是有远程系统的管理员权限。 第一部分:调用PSAPI函数枚举系统进程   M$的Windows NT开发小组开发了自己Process Status函数,包含在PSAPI.DLL文件中,这些函数只能在高于NT4.0以后的版本中使用。PSAPI一共有14个函数[实际PSAPI.DLL输出函数有19个,但其中有5个函数有两个版本,分别是ANSI和Unicode版本],通过调用这些函数,我们可以很方便的取得系统进程的所有信息,例如进程名、进程ID、父进程ID、进程优先级、映射到进程空间的模块列表等等。为了方便起见,以下的例子程序只获取进程的名字和ID。   简单的程序如下: /************************************************************************* Module:ps.c 说明:调用PSAPI函数枚举系统进程名和ID,Only for NT/2000 *************************************************************************/ #include psapi.h #pragma comment(lib,psapi.lib) void PrintProcessNameAndID( DWORD processID ) {   char szProcessName[MAX_PATH] = unknown;   //取得进程的句柄   HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |                   PROCESS_VM_READ,                   FALSE, processID );   //取得进程名称   if ( hProcess )   {     HMODULE hMod;     DWORD cbNeeded;     if ( EnumProcessModules( hProcess, hMod, sizeof(hMod), cbNeeded) )       GetModuleBaseName( hProcess, hMod, szProcessName, sizeof(szProcessName) );   }   //回显进程名称和ID   printf( \n%-20s%-20d, szProcessName, processID );   CloseHandle( hProcess ); } void main( ) {   DWORD aProcesses[1024], cbNeeded, cProcesses;   unsigned int i;   //枚举系统进程ID列表   if ( !EnumProcesses( aProcesses, sizeof(aProcesses), cbNeeded ) )     return;   // Calculate how many process identifiers were returned.   //计算进程数量   cProcesses = cbNeeded / sizeof(DWORD);   // 输出每个进程的名称和ID   for ( i = 0; i cProcesses; i++ )     PrintProcessNameAndID( aProcesses[i] );   return; } 第二部分:调用ToolHelp API枚举本地系统进程   在第一部分提到的PSAPI函数只能枚举NT系统的进程,在Windows9x环境下我们可以通过调用ToolHelp API函数来达到枚举系统进程的目的。M$的

文档评论(0)

pep2233 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档