CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

嘎嘎,关于PID(包括服务也就是隐藏进程的PID)的获取,这里提出一种新的解决办法哈

楼主zcsor(偶业余的虽然星星了,但是水平依然是非常业余的。)2006-07-03 12:58:02 在 VB / 基础类 提问

因为是公布一个方法,所以没几分可给啦,先进来的有分哦  
   
  用DOS命令:TASKLIST,这个是新增加的一个命令行工具。  
  1、不带参数可以显示出任务管理器里面所有的任务名和对应PID  
        对应VB语句(把结果输出到C:\1.TXT)  
        shell   "cmd.exe   /c   tasklist   >>   c:\1.txt",vbhide  
  2、使用TASKLIST   /SVC   可以显示出所有提供服务的程序名和对应PID  
        对应VB语句(把结果输出到C:\2.TXT)  
        shell   "cmd.exe   /c   tasklist   /svc   >>   c:\2.txt",vbhide  
   
  嘿嘿。。把这个文本打开并读回去就可以了,分割符好象是空格啦,用http://community.csdn.net/Expert/topic/4841/4841813.xml?temp=.1735803里面所提的SPLIT函数分离很好,呵呵,这个函数才学明白怎么用...嘎嘎  
   
   
  以下是该命令行的具体使用方法(以下是用DOS命令tasklist   /?   >>   c:\tl_rme.txt生成的)  
   
  TASKLIST   [/S   system   [/U   username   [/P   [password]]]]  
                    [/M   [module]   |   /SVC   |   /V]   [/FI   filter]   [/FO   format]   [/NH]  
   
  描述:  
          这个命令行工具显示应用程序和本地    
          或远程系统上运行的相关任务/进程的  
          列表。  
   
  参数列表:  
        /S           system                       指定连接到的远程系统。  
   
        /U           [domain\]user         指定应该在哪个用户上下文  
                                                        执行这个命令。  
   
        /P           [password]               为提供的用户上下文指定  
                                                        密码。如果忽略,提示输入。  
   
        /M           [module]                   列出所有其中符合指定模式名  
                                                        的   DLL   模块的所有任务。  
                                                        如果没有指定模块名,则  
                                                        显示每个任务加载的所有模块。  
   
        /SVC                                         显示每个进程中的服务。  
   
        /V                                             指定要显示详述  
                                                        信息。  
   
        /FI         filter                       显示一系列符合筛选器指定的标准  
                                                        的任务。  
   
        /FO         format                       指定输出格式。  
                                                        有效值:   "TABLE"、"LIST"、"CSV"。  
   
        /NH                                           指定栏标头不应该在  
                                                        输出中显示。  
                                                        只对   "TABLE"   和   "CSV"   格式有效。  
   
        /?                                             显示帮助/用法。  
   
   
  筛选器:  
          筛选器名                 有效操作符                                 有效值  
          -----------           ---------------                       --------------  
          STATUS                     eq,   ne                                         正在运行   |   没有响应  
          IMAGENAME               eq,   ne                                         图像名  
          PID                           eq,   ne,   gt,   lt,   ge,   le         PID   值  
          SESSION                   eq,   ne,   gt,   lt,   ge,   le         会话编号  
          SESSIONNAME           eq,   ne                                         会话名  
          CPUTIME                   eq,   ne,   gt,   lt,   ge,   le         CPU   时间,格式为  
                                                                                              hh:mm:ss。  
                                                                                              hh   -   时,  
                                                                                              mm   -   分,ss   -   秒  
          MEMUSAGE                 eq,   ne,   gt,   lt,   ge,   le         内存使用量(KB)  
          USERNAME                 eq,   ne                                         用户名,格式为   [domain\]user  
                                                                                               
          SERVICES                 eq,   ne                                         服务名  
          WINDOWTITLE           eq,   ne                                         窗口标题  
          MODULES                   eq,   ne                                         DLL   名  
   
  例如:  
          TASKLIST  
          TASKLIST   /M  
          TASKLIST   /V  
          TASKLIST   /SVC  
          TASKLIST   /M   wbem*  
          TASKLIST   /S   system   /FO   LIST  
          TASKLIST   /S   system   /U   domain\username   /FO   CSV   /NH  
          TASKLIST   /S   system   /U   username   /P   password   /FO   TABLE   /NH  
          TASKLIST   /FI   "USERNAME   ne   NT   AUTHORITY\SYSTEM"   /FI   "STATUS   eq   running"  
   
  问题点数:36、回复次数:20Top

1 楼boiciy(喜欢去哪去哪)回复于 2006-07-03 13:00:17 得分 1

学习!Top

2 楼zcsor(偶业余的虽然星星了,但是水平依然是非常业余的。)回复于 2006-07-03 13:00:58 得分 0

看看这个函数,似乎挺强悍的,,好象看见了USER   PASSWORD什么什么的哦.....嘿嘿Top

3 楼boiciy(喜欢去哪去哪)回复于 2006-07-03 13:01:55 得分 1

比调用API好用!支持!能不用API尽量不用!Top

4 楼zcsor(偶业余的虽然星星了,但是水平依然是非常业余的。)回复于 2006-07-03 13:31:51 得分 0

我倒。。呵呵。。。为什么不用呢。。  
   
  。。。。。  
   
  呵呵,,用API也能取到PID的,进程结构里面PROCESSID就是了。不过确实挺烦人的,没办法的时候只能借助API了,当时写任务管理器就是用API写的,麻烦死我了,后来改用WMI就简单多了。呵呵,后来再想想,任务管理器都用DOS命令就成了,呵呵。。。。Top

5 楼boiciy(喜欢去哪去哪)回复于 2006-07-03 16:19:28 得分 1

宗旨就是能用基本的东西,就不用花哨还可能花钱的控件  
  能用文本的东西,就不要用XML、注册表之类的时尚复杂的东西  
  初学者不要动不动API  
  编程这种苦差事能不干,就不干!Top

6 楼aperyx(Fly)回复于 2006-07-03 16:39:59 得分 1

又學到了一招Top

7 楼zcsor(偶业余的虽然星星了,但是水平依然是非常业余的。)回复于 2006-07-03 17:36:01 得分 0

TO:aspower_(楼主做人要厚道   完事记得给分!我知道楼下就欣赏偶的分)   (   )   信誉:100    
   
  呵呵,不懂就学才是好孩子,来,给你棒棒糖  
  Top

8 楼lsftest()回复于 2006-07-03 17:47:07 得分 5

1.适用范围比较窄,好像2000下就是另外一个相似命令tlist。  
  2.输出成文本文件再打开读取比较麻烦,绕了一个圈,不如试试用管道直接读。。Top

9 楼zcsor(偶业余的虽然星星了,但是水平依然是非常业余的。)回复于 2006-07-06 12:28:14 得分 0

哈,楼上有道理  
   
  主要是提供一个方法啦,呵呵,最近DOS都生疏了,翻了翻WINDOWS的帮助无意中翻出来的,和大家共享一下了。  
   
  其实用WMI可以解决,代码也比较少  
   
  楼上能否给一个用API获取进程SID的,另开贴Top

10 楼Modest(塞北雪貂)·(偶最欣赏楼主的分)回复于 2006-07-06 12:42:18 得分 3

這種方法,效率是問題。Top

11 楼vbman2003(家人)回复于 2006-07-06 12:59:49 得分 4

哎,一个蛮有用的命令  
  刚才试了一下,居然发现自己机器上有一个进程管理器中没显示的进程,研究一下  
  Top

12 楼boiciy(喜欢去哪去哪)回复于 2006-07-06 13:24:46 得分 2

回头再看一下贴。在windows里找TASKLIST  
   
  怎么搞的?没搜到?这个程序在哪里呢?Top

13 楼lsftest()回复于 2006-07-06 16:25:06 得分 4

得到sid????这个一般用途不太大吧。。  
   
  如你所说“其实用WMI可以解决,代码也比较少”。。可以的话就用wmi吧,简单省事。。  
   
  一定要用api,试试   WTS   APIs:ProcessIdToSessionId。。。。。。  
   
  http://www.microsoft.com/msj/1099/terminal/terminal.aspx  
   
  未经测试。。。。。。。  
  Top

14 楼kmlxk(xiaoKKKK)回复于 2006-07-06 16:31:38 得分 5

EPROCESS结构里面有个sessionid,不知道用来干嘛的,o_OTop

15 楼zcsor(偶业余的虽然星星了,但是水平依然是非常业余的。)回复于 2006-07-07 21:39:10 得分 0

呵呵,多谢了。。直接是高手如云啊,  
   
  获得SID就是看人家任务管理器里有,自己就痒痒,呵呵,总想学学,那次问一位高手说用WMI可以解决,就用了WMI写了一些程序,不过毕竟WMI里面东西还不多(虽然很强悍,很多东西API弄很麻烦,它却很简单),就想用多学点API,找了好几天都没看见一个有价值的示例,哪怕是C++,DELPHI的也行啊,结果没有,嘿嘿。。  
   
  过两天结这个帖子,2位楼上到时去新开的帖子给分。。。Top

16 楼tokimemo(紫水晶)回复于 2006-07-08 18:53:55 得分 3

很老的东西了  
  那个,不知道大家用vb做网络的多么?  
  找局域网中的计算机名用什么语句  
  如果你上网找的话,发现那些代码都是老长的  
  还老有问题  
  如果你用net   view   >   netname.txt  
  就一一帮你列举出来了.  
  不过告诉一下楼主  
  2k以下系统就要小心了Top

17 楼LordSimon(lordsimon@x.cn)回复于 2006-07-09 02:01:02 得分 2

xp以后才有tasklistTop

18 楼barenx()回复于 2006-07-10 13:29:16 得分 3

这个没用,一些rookit修改gdi或者hook   api立即让你找不到北,  
  要枚举全局表,vb好想不行  
  还有一些系统快照的api也不行  
  原理都是一样了,  
  具体的想要看隐藏进程可以看看icesword的   代码  
  可以借鉴但vb实现不了  
  c的可以  
  Top

19 楼zcsor(偶业余的虽然星星了,但是水平依然是非常业余的。)回复于 2006-07-11 13:53:51 得分 0

呵呵,也未必的,前几天就回了一个用VB获取隐藏进程的代码,可以在XP、2K、03以上操作系统中运行。  
  好了,把这个帖子结了,再开一个加分  
   
  另TO:tokimemo(紫水晶)   (   )    
  那个代码我手头就有用API实现的,前几天写了一个用WMI的,都可以列举,API的没怎么详细看,里面参数实在是不少,WMI的是自己正在学,就写了一些,其实啊,这个帖子真的是仅仅给新手提供一个简单方法,没想到啊,这砖一抛,因来这么多高手,嘿嘿,有点自惭形秽了Top

相关问题

关键词

得分解答快速导航

  • 帖主:zcsor
  • boiciy
  • boiciy
  • boiciy
  • aperyx
  • lsftest
  • Modest
  • vbman2003
  • boiciy
  • lsftest
  • kmlxk
  • tokimemo
  • LordSimon
  • barenx

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo