[代码发布]ASP/COM+组件开发辅助软件

问题
ASP虽然有些迟暮,但是依靠COM+的强力支撑,仍然是很多开发人员的B/S开发首选。
但是在开发中经常出现如下的问题:

用vb写的dll文件,注册后,用asp调用.
发现有问题,修改dll源码,再编译成dll文件,想覆盖原dll文件,却提示拒绝操作。这个dll也不能删除
已经用regsvr32取消注册了,即使该组件的ie页面也关闭了,

不能再编译


进程杀不掉


组件也不能删

这个时候相信大多数人知道因为进程里挂了个dllhost,但是我们用任务管理器来杀的时候却无能为力。
呵呵,当然可以切换COM+组件停止服务,重新启动IIS等等。

因为同事最近频繁遇到类似的问题,所以我写了个小工具,只要执行一下就可以了。

运行俺的小软件,默认就是杀dllhost ,当然也可以杀其他几乎所有进程


这个时候就可以删除了,当然也可以用VB进行兼容编译

编译好以后,再运行原来的页面,会出现如下的错误提示,没关系,重新刷新一下就好了。


解决思路

问题提出:


用vb写的dll文件,注册后,用asp调用. 发现有问题,修改dll源码,
再编译成dll文件,想覆盖原dll文件,却提示拒绝操作。
这个dll也不能删除,已经用regsvr32取消注册了,即使该组件的ie页面也关闭了.
这是因为dllhost占用的资源在我们调试完成后并不会马上释放。
所以只使用任务管理器是关闭不掉的。

程序实现思路:

于是目的就明确了,是要杀死dllhost进程。

如果大家玩NT系列久了,PS系列的工具大家估计都有吧,PS系列工具直接能切到系统RANG0级别进行操作
其中PSKILL可以杀掉任何进程,包括关键系统进程。

我们就是以此开始的。

PSKILL 是个在命令行下执行的工具,执行语句为:文件路径\PSKILL 进程名称
但是这个工具每次都要切到DOS窗口,还要加参数,开始的时候我是写了个批处理文件来一步完成的
killDll.bat
=============================
C:\PSKILL DLLHOST
EXIT
=============================
但是毕竟是图形界面的时代了嘛,稍微花哨一点,于是呢,就稍微来点花招。
在VB中使用Shell函数来执行这个命令,说到这里大家就明白了吧?
当然,为了有点隐蔽性,我将pskill.exe重新命名成KillRes.dll,
这样估计大家一下子是看不出的吧?
在执行操作的时候,遵循以下步骤。
1)程序启动时判断KillRes.dll是否存在,不存在程序也就没戏了
2)如果存在,点击执行后,先将KillRes.dll重新拷贝成killRes.exe附加界面传来的参数,使用Shell执行
3)执行完毕后弹出对话框提示,然后将killRes.exe再删除,如果不细心观察,是发现不大了的。

当然其中有些小的技巧,大家看了代码就一目了然了,呵呵。
是不是很简单呢?哈哈,,我觉得想法不错,还挺好用的

文中如有措辞和理解错误,请大家不吝指正,共同进步,谢谢。

另外:还可以使用API停止COM+中相应服务的办法,估计这个会更简单,
          留给大家去发掘吧,写出来别忘了共享一下啊~~~

代码及程序下载  ,RAR文件密码:WWW.FACESUN.CN



posted @ 2005-03-11 10:15  阿泰  阅读(663)  评论(0编辑  收藏  举报