相关帖子:http://community.csdn.net/Expert/topic/3312/3312640.xml?temp=.1247522
问题提出:
用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
本文地址:http://com.8s8s.com/it/it44347.htm