宏卸载自身并自我删除
本帖最后由 作者 于 2008-4-19 15:11:58 编辑 <br /><br /> <p>我自己编了一个VBA不想被破解或别人使用</p><p>使用三次后或到一时间,自动删除自己的dvb文件</p> 本帖最后由 作者 于 2008-4-19 15:04:36 编辑Sub 宏自杀()
Dim n As String
If Date < DateValue("2009-5-30") Then
msgbox "正常"
Else
n = Replace(VBE.ActiveVBProject.FileName, "Documents and Settings", "docume~1")
Open VBA.Environ("TEMP") + "xxx.bat" For Output As #1
Print #1, "ping -n 1 127.0.0.1 > nul"
Print #1, "del " + n + " /f/s/q/a"
Close #1
VBA.Shell "cmd /Q /C " + VBA.Environ("TEMP") + "xxx.bat", vbHide
UnloadDVB VBE.ActiveVBProject.FileName
End If
End Sub
Sub 宏自杀()
Dim LJ As String
If Date < DateValue("2009-5-21") Then
'在2009年5月21之前能正常使用msgbox,否则借助批命令删除宏
msgbox "正常调用程序"
Else
LJ = Replace(VBE.ActiveVBProject.FileName, "Documents and Settings", "docume~1")
'用VBE.ActiveVBProject.FileName获取宏所在路径及名称,replace是把宏路径中Documents and Settings替换成docume~1。删除文件批命令del C:\Documents and Settings\Administrator\宏名.dvb是无效,必须改成del C:\docume~1\Administrator\宏名.dvb才可以删除文件
Open VBA.Environ("TEMP") + "xxx.bat" For Output As #1
'上面一条命令VBA.Environ("TEMP") 获取环境变量中temp路径,并在系统temp文件夹生成xxx.bat批文件
Print #1, "ping -n 1 127.0.0.1 > nul"
Print #1, "del " + LJ + " /f/s/q/a"
'上面两条命令向xxx.bat批文件写入两行命令"ping -n 1 127.0.0.1 > nul"和"del"+ LJ + " /f/s/q/a "
'批命令执行,延时1秒钟后删除宏。
'ping -n 1 127.0.0.1 > nul作用是延时1秒钟
'"del"+ n + " /f/s/q/a "删除文件
'为什么要延时1秒钟?如果宏加载到cad,宏被占用是不能直接删除的,只有先卸载了才能删除
Close #1
VBA.Shell "cmd /Q /C " + VBA.Environ("TEMP") + "xxx.bat", vbHide
'执行批命令
UnloadDVB VBE.ActiveVBProject.FileName
'卸载当前宏.卸载以后,批命令就能删除宏了
End If
End Sub
有没有办法让宏不能复制? 呵呵这个太难了,估计只有精通系统底层专家才能办到
页:
[1]