怎样可以写一个VB文件能检测自己的大小,和有没有被修改过?
如果有这个文件就停止运行。谢谢大家!
如果有这个文件就停止运行。谢谢大家!
解决方案 »
- 写了个CD抓音轨转WAV文件的小程序。。散分~~~顺便宣传下团队网站。。。
- 急求正则表达式TEXT(param1,param2)
- 如何禁止treeview控件的节点被改名?!!!
- vb mscomm很简单的pc com1的2,3端口通信问题,今天改了form哪里一点儿,结果不能显示输出了,不知道错哪了
- ME 到底指的哪个对象?
- 请问有没有一个对图象中一点取RGB 色的函数(在线等)50分
- sal关于金额的计算方法
- 请问:哪里有单线体的字母字库下载或可购买?
- 如何实现IE的自定义工具栏?
- 那位有vb6的打印、预览控件
- 初学数据库,请高手救命!!关于查询的小问题
- 听说ADO和ADODC有个功能可以把记录集放到本地,当需要时才更新上服务器的数据库。可行吗?
检查文件属性使用fso
Private Sub Form_Load()
Me.AutoRedraw = True
Dim fileName As String
fileName = App.Path & "\" & App.EXEName & ".exe"
Me.Print fileName
Open fileName For Binary Access Read As #1
Dim bt As Byte
Dim i As Long
For i = 1 To 2
Get #1, , bt
Me.Print Chr(bt);
Next
Me.Print
Close #1
End Sub
ExePath = iif(right(app.path,1)<>"\",app.path & "\",app.path) & app.exename & ".exe"
FileLen=Filelen(ExePath)'获取文件自身大小'如果要知道文件有没有被修改过,
'可以使用计算文件CRC码的方法实现
关于CRC编码(循环冗余检核)网络上查询CRC的定义结果:
一种数据传输检错功能,对数据进行多项式计算,并将得到的和数附在帧的后面。接收设备也执行类似的算法。
这里给你我写的一个CRC32的类模块
Option Explicit
'模块描述
'---------------------------------------------------------------------------------------
' Date-Time : 2005-12-11 22:25:43
' Author : Cadaver
' Purpose : 计算CRC32码
'---------------------------------------------------------------------------------------
'CRC32表
Private crc32Table(Num256) As Long
'常数
Private Const Num0 As Long = &H0
Private Const Num1 As Long = &H1
Private Const Num2 As Long = &H2
Private Const Num8 As Long = &H8Private Const Num255 As Long = &HFF
Private Const Num256 As Long = &H100
Private Const Num16777215 As Long = &HFFFFFF
Private Const dwPolynomial As Long = &HEDB88320
Private Const Num2147483647 As Long = &H7FFFFFFF
Private Const NumNegative1 As Long = &HFFFFFFFF
Private Const NumNegative2 As Long = &HFFFFFFFE
Private Const NumNegative256 As Long = &HFFFFFF00'构造
Private Sub Class_Initialize()
'初始化CRC32表
Dim i As Integer, j As Integer Dim dwCrc As Long
For i = Num0 To Num255
dwCrc = i
For j = Num8 To Num1 Step NumNegative1
If (dwCrc And Num1) Then
dwCrc = ((dwCrc And NumNegative2) \ Num2) And Num2147483647
dwCrc = dwCrc Xor dwPolynomial
Else
dwCrc = ((dwCrc And NumNegative2) \ Num2) And Num2147483647
End If
Next j
crc32Table(i) = dwCrc
Next i
End Sub'析构
Private Sub Class_Terminate()
Erase crc32Table
End Sub'计算CRC32码
Public Function CalcCrc32(ByRef buffer() As Byte) As Long
Dim crc32Result As Long
crc32Result = NumNegative1
Dim i As Long
Dim iLookup As Integer
Dim Lb As Long, Ub As Long
Lb = LBound(buffer): Ub = UBound(buffer)
For i = Lb To Ub
iLookup = (crc32Result And Num255) Xor buffer(i)
crc32Result = ((crc32Result And NumNegative256) \ Num256) And Num16777215
crc32Result = crc32Result Xor crc32Table(iLookup)
Next i
CalcCrc32 = Not (crc32Result)
End Function
用工具..可以但是如果又让程序自己能检测到呢..如果说检测后使用常量固态编码..那新编译生成的EXEMD5值又不一样了...或者数字签字可以..不过不了解中..