如何将数据写入程序自身?比如我想实现:
每次在VB程序退出时把当前时间存储到VB程序里,然后下次运行程序时再把存储的时间数据读出来与当前时间进行比较,通过这样的方式来实现简单的应用程序保护。求写入方法和读取方法。(请大家帮忙一下,分数不够的话小弟可以再加!)

解决方案 »

  1.   

    写到程序不可能,可以写到注册表或.ini文件中
      

  2.   

    不行,当你的程序在运行时 exe 文件是被锁定不能修改的。
      

  3.   

    可以写到配置文件中,或写到注册表中!每次EXE运行时,再取出来比较!再处理!
      

  4.   

    一般的做法是写到注册表.还可以写到INI文件和文本文件,放到隐蔽一点的路径上.
      

  5.   

    Exe改写自己肯定不行,但可以读自己,利用这个特性,可用变通的办法:
    1、编写并生成另一个Exe文件,假设名为:“Midf.exe”,这个Exe没别的用处,就是用于改写你的主Exe;
    2、在你的主Exe需写自己时,就退出,并在退出前调用前面那个Midf.exe;
    3、Midf.exe要注意,不能一启动就执行改写操作,因为,这时调用它的主程序还没退出,改写会失败的,可用一个Timer延时1-2秒,再执行,执行完就退出;
    4、Midf.exe最好不要用exe做扩展名,随便换一个名,如:Midf.dll,主Exe退出时,对其先执行一次复制操作,将其复本命名为Midf.exe,再调用复本。
    5、Midf.exe退出时再重新启动主Exe,而主exe同样延时1-2秒,检查一下Midf.exe是否存在,若存在就Kill,整个过程,就一点不留痕迹了。
    6、Exe文件头与尾有很多地方可以写内容,你用16进制编辑看看,一些有文本的地方,多数可以改写,你可利用这些位置,文件中间最好别动,因为每次编译后,其位置可能会有变化的。
    7、这种方案我以前曾用于过在线升级程序升级自身,很好用。
      

  6.   

    楼主是不是想发布个共享程序,有使用时间或者次数限制的?所以你怕一般的ini或者注册表方法都太明显了.
    那你可以用加密算法把用于记录具体数据的文件加密一下就可以了
      

  7.   

    同意 mycatlove(冰湖小生)
    不管是写注册表还是写文件,都可以监视,关键在于用加密,就算别人知道你把数据方在什么地方也没用。
      

  8.   

    我只是希望能把类似于使用时间或者使用次数之类的关键数据放在一个安全的地方,可以供程序调用。
    如果我的数据库是Access,你们认为把关键数据放在加了数据库密码的Access中安全么?
      

  9.   

    接homezj的力,再改进一下。假设程序名为main.exe。
    1、程序退出时将自己复制成new.dat,将new.dat作为数据文件修改,然后运行new.dat(shell命令可以运行不是exe的程序)。
    2、new.dat运行后发现自己的名字不是main.exe,则隐藏运行并企图删除main.exe。如果删除不成功,就不断重试(要加doevents语句)。删除成功后,new.dat将自己复制到main.exe。
    3、可以再次运行main.exe以删除new.dat,但是好像没有太大必要。这个new.dat可以起到声东击西的作用。用户会误以为执行词次数存在了new.dat里面。
      

  10.   

    执行次数用加密的方式恐怕不太行。对于文件一个kill就清零了,对于注册表山了键值也可以清零。
    虽然改自己程序的方式也不可靠,但是在被别人原理发现之前还是可以尝试的。最好做成多种手段结合的方式。让使用者尝试每一种手段时都不成功。