易截截图软件、单文件、免安装、纯绿色、仅160KB

VB实现可执行文件运行时自删除

    有时,为了实现动态更新,我们需要对正处于运行状态的应用程序进行自删除,就像360安全卫士在线升级那样。但是,Windows是不允许删除正处于运行状态的应用程序的,怎么办?一般来说,我们可以使用两个程序来实现,一个专门负责版本检测和删除,一个才是业务需要的主应用程序。能不能将二者合二为一呢?答案是可以的,那就是使用BAT或VBS来进行。使用BAT,由于不能及时判断应用程序是否已经结束,于是人们通过降低其执行优先级别,让其晚于应用程序结束,从而达到删除目的,这种办法有时会造成删除失败,而使用VBS,可以利用Windows内置的COM对象,非常方便地判断应用程序是否结束,从而实现了真正意义上的自删除。不过相对于BAT,VBS也有一些缺点,那就是依赖性较强,而一部分计算机出于安全考虑,屏蔽了WSH功能,从而导致删除失败,从这一点来讲,反倒不及BAT方式了。
    本文的实现代码基于VBS,至于使用BAT文件,可以参考张正秋写的《Windows核心编程》一书,俺不再提供实现代码。
'* ******************************************************* *
'* 程序名称:DelMe.bas
'* 程序功能:在VB中实现应用程序自删除
'* 作者:lyserver
'* 联系方式:http://blog.csdn.net/lyserver
'* ******************************************************* *

Sub Main()
Call DelMe
End Sub

Public Sub DelMe()
Dim fn As Integer

On Error Resume Next
If App.LogMode Then
fn = FreeFile()
Open "del.tmp.vbs" For Output As fn
SetAttr "del.tmp.vbs", vbHidden
Print #fn, "Dim FSO,WMI"
Print #fn, "Set WMI=GetObject(" & Chr(34) & "winmgmts:\\." & Chr(34) & ")"
Print #fn, "Set FSO=CreateObject(" & Chr(34) & "Scripting.FileSystemObject" & Chr(34) & ")"
Print #fn, "Do While WMI.ExecQuery(" & Chr(34) & _
"SELECT * from WIN32_PROCESS WHERE NAME='" & App.EXEName & ".EXE'" & Chr(34) & ").Count"
Print #fn, "WScript.Sleep 1"
Print #fn, "Loop"
Print #fn, "FSO.DeleteFile " & Chr(34) & App


相关文档:

VB中filesystemobject对象实现文件存取方法

最简单的方法是使用filesystemobject对象。而它并非VB内置对象,
需引用才可以使用。
1.filesystemObject对象引用
“工程/引用/microsoft scription Runtime”
 在对象浏览器窗口中选“scripting”模块,看到增了许多对象,
drive filesystemobject    textstream &nbs ......

VB 取得指定exe文件版本号

【函数】  
  GetFileVersionInfo  
   
  【操作系统】  
  Win9X:Yes  
  WinNT:Yes  
   
  【声明】  
  GetFileVersionInfo   Lib   "version.dll"     Alias   "GetFileVersionInfoA" &n ......

“自动点击按钮”小工具VB源码

“自动点击按钮”小工具VB源码
Option Explicit
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_LBUTTONUP = &H202
Pri ......

VB逆向工程实战演习

没壳,没有Command Button,所有的内容都在Form_Load里。用VBDE查看,Form_Load在00406A90,打开W32dsm,载入Casino轮盘智能机器人,查找00406A90,反汇编代码如下:
Quote:
:00406A90 55                   &nb ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号