怎样可以写一个VB文件能检测自己的大小,和有没有被修改过?
如果有这个文件就停止运行。谢谢大家!

解决方案 »

  1.   

    FileLen("文件全路径")  可以得到文件的大小
      

  2.   

    检查文件属性的最后修改时间和自己给定的时间比较,如果不是你设定的时间就表示已经修改
     检查文件属性使用fso
      

  3.   

    FileLen(文件路径)  可以得到文件的大小
      

  4.   

    自己读自己可以:
    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
      

  5.   

    使用API,好像类似GetFileTime, GetFileSize, GetFileInformationByHandle 之类.
      

  6.   

    对PE文件中代码段和数据段进行md5处理,然后将结果保存在资源中。在程序启动的时候也对代码段和数据段进行一次md5处理,对比和资源中的内容
      

  7.   

    dim ExePath as string,FileLen as long
    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
      

  8.   

    MD5,好像是可以发现文件被改变.不过好实现呢...因为如何知道程序编译好知道的MD5值呢..
    用工具..可以但是如果又让程序自己能检测到呢..如果说检测后使用常量固态编码..那新编译生成的EXEMD5值又不一样了...或者数字签字可以..不过不了解中..