ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 15381|回复: 55

[完全解决问题了!]进程,端口,服务,启动查看工具

[复制链接]

TA的精华主题

TA的得分主题

发表于 2007-2-13 12:30 | 显示全部楼层 |阅读模式

这个工具主要应用API来获取系统进程信息, 端口信息, 服务信息以及启动项信息. 在NT(NT里好像不支持ToolHelp32)/2000/XP下可以使用. 它可以帮助你查看是不是有不熟悉的进程或服务正在运行.

之前并没有解决Excel崩溃的问题,十分抱歉.  今日突然有了灵感, 之前是不管tcpExTable实际有多少table, 都是按101个Table来MoveMemory. 所有有时会导致Excel崩溃, 现在改成分成一个一个Table复制就没有问题了. 我自己试了大约100次,没有崩溃现象. 请大家帮忙看看

9ny0VBtw.zip (110.7 KB, 下载次数: 364)


[task manager 进程管理器]
这一页里列出正在运行的所有的进程. 可以获得进程的使用内存大小,文件完整地址,版本信息,公司信息,载入的所有模块,线程数,优先级别,启动时间,从那个程序启动的信息. 可以停止指定的进程.


这里有个用户权限的问题, 当你的权限不够时, 很多系统进程的详细信息看不到. 即使你有管理员权限, 像csrss这些程序的信息也是看不到的. 有些资料说用打开到SE_DEBUG_NAME的特权可以获取csrss的进程句柄, 在Excel里试了不可行,不知道用VB编译成执行文件会怎么样.


有很多种方法获取进程信息, 这里只用了ToolHelp32和PSAPI一起来获取尽可能多的信息. CPU Usage是不准确的, 可以使用performance counters的方法来获取实时的CPU Usage. 考虑到这个没有Timer的功能,就没有改这个CPU Usage的方法了.


[TCP view TCP监控器]
这个工具里其它的代码基本上在网上找到类似的例子. 但这个TCP View的功能我用Google没有找到过VB里的实例. 所以我参考Mark Russinovich的netstatp的C语言源代码写出这个VB的代码. 可以列出所有TCP和UDP端口的状态以及这些端口对应的程序. 一般的木马程序运行后会一直处于侦听状态,这样你可以用这个工具查看是不是有不熟悉的程序正处于侦听状态.


关于Mark Russinovich, 他以前有个公司叫sysinternals(www.sysinternals.com). 发布过很多Windows的应用程序. 去年被微软收编. 他的网站上有很多有用的工具. 如非常强大的Process Explorer(十分惭愧我也用同样的名字),还有ProcessMonitor(可以用来监控文件和注册表的改变,这样你可以监控某个程序或安装程序添加和改变了那些文件和注册表). 很有帮助的.


[Service 服务]
这一页可以查看所有运行和没有运行的服务. 包括服务的详细信息(状态,类型,路径,描述等). 可以停止和开始指定的服务. 可以改变服务的启动状态.


停止服务时,因为有些服务是同其它关联的,所以会失败. 虽然可以实现像在系统管理工具里一样跳出一个窗口列出所有关联的服务,然后提示是否关闭所有这些服务,觉得太麻烦在这里就没有加这个功能了.


这里同样有权限的问题. 如果你不是管理员的话,就不可以更改服务的启动类型(出现OpenSCManager错误).


[Startup 启动项]
这一页列出所有开机启动项, 有些是保存在注册表里的,有些是保存在Documents and Settings里的. 你可以把前面的检查框取消掉,然后按"应用"键来删除你取消的启动项. 这一页还提供了退出当前系统的功能.


[此贴子已经被作者于2007-2-26 18:02:17编辑过]

6uwnDYXB.zip

111.1 KB, 下载次数: 159

[新春奉献]进程,端口,服务,启动查看工具

wo1CgWV5.rar

114.17 KB, 下载次数: 199

[新春奉献]进程,端口,服务,启动查看工具

TA的精华主题

TA的得分主题

发表于 2007-2-13 12:33 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2007-2-13 12:45 | 显示全部楼层
的确高深。还没看到什么效果,Excel就Over了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-2-13 12:59 | 显示全部楼层
QUOTE:
以下是引用Aeolian-Vox在2007-2-13 12:45:12的发言:
的确高深。还没看到什么效果,Excel就Over了。

呵呵. 试多几次. 都是CopyMemory的祸.

TA的精华主题

TA的得分主题

发表于 2007-2-13 13:19 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2007-2-13 13:44 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2007-2-13 14:49 | 显示全部楼层
QUOTE:
以下是引用winland在2007-2-13 12:59:02的发言:

呵呵. 试多几次. 都是CopyMemory的祸.

呵呵,多试几次,都是以失败而告终。

[em06][em05]

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-2-13 15:26 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
QUOTE:
以下是引用Aeolian-Vox在2007-2-13 14:49:20的发言:

呵呵,多试几次,都是以失败而告终。

[em06][em05]

不会吧, 我这里崩溃的机会还是比较少的. 看来一定要解决问题这个问题才行.

TA的精华主题

TA的得分主题

发表于 2007-2-14 22:05 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-2-21 18:37 | 显示全部楼层

参考了一下高手的代码,发现问题可能出在VS_NEWINFO结构上,在调用完VerQueryValue之后,实际上lVerbufferLen就是返回的字节数,而原来的代码是用固定的1024长的ab结构来MoveMemory.

rc = VerQueryValue(sBuffer(0), "\StringFileInfo\" + astr + "\FileDescription", lVerPointer, lVerbufferLen)
If rc Then
   MoveMemory ab, lVerPointer, Len(ab)
   fileDesc = Left$(ab.astr, (InStr(ab.astr, Chr$(0)) - 1))
End If

所以在改为用字节数组后就没有问题了。

rc = VerQueryValue(VarPtr(sBuffer(0)), "\\StringFileInfo\\" + astr + "\\FileDescription", lVerPointer, lVerbufferLen)
If rc <> 0 And lVerbufferLen > 0 Then
   ReDim lpTmp(lVerbufferLen - 1) As Byte
   MoveMemory lpTmp(0), ByVal lVerPointer, lVerbufferLen
   fileDesc = StrConv(lpTmp, vbUnicode)
   fileDesc = Left(fileDesc, lVerbufferLen - 1)
End If

请大家试试看看还有什么其它的问题。

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-21 20:54 , Processed in 0.038383 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表