VB程序员博客
04 3rd, 2010
VBS转为EXE之后.exe文件如何实现自删除?
这样的话.貌似就要使用VBS里面的代码?
或许大家有更好的解决方法.不妨提出来?
我是见过有人搞bat或者cmd用命令行删的
就是程序卸载
<
如果仅删除exe程序,很简单,编一个.bat文件,里面就一句代码:
del d:aaa.exe
正在运行的.exe程序,无法将其自己本身删除,但可以调用.bat删除它,另一种方法,程序启动时,系统栏同时启动另一个程序,这个程序专门接受第一个程序的指令删除它,用timer延时执行
http://www.m5home.com/bbs/dispbbs.asp?boardid=28&Id=2798
BAT自杀大法…………
02 6th, 2010
dim cn as new adodb.connection
cn.open ""
str1="update tab set a=1 where …"
str2="update tab set a=12 where …"
str3="update tab set a=12 where …"
str4="update tab set a=12 where …"
str5="update tab set a=12 where …"
…
cn.execute str1
cn.execute str2
cn.execute str3
cn.execute str4
cn.execute str5
…
现在想把…包含的部分变成下列形式(但是下列的形式是错误的),请问如何实现。或帮我改易下页可以。
for i=0 to 2000
cn.execute str & (i+1)
next
为什么要写成上面的形式,我觉得这样好修改比较方便。另外不占地方.
dim str1(1 to 5) as string ' str是系统函数,所以用str1
str1(1)="update tab set a=1 where …"
str1(2)="update tab set a=12 where …"
str1(3)="update tab set a=12 where …"
str1(4)="update tab set a=12 where …"
str1(5)="update tab set a=12 where …"
for i=0 to 2000
cn.execute str1(i+1)
next
for i=0 to 2000
str="update tab set a=" & (i+1) & " where …"
cn.execute str
next
for i=0 to 2000
strsql="update tab set a=" & (i+1) & " where …"
cn.execute strsql
next
错误原因在于VB不支持直接使用指针。
延续1楼的思路,使用更有效率的批更新:
dim str1(1 to 5) as string ' str是系统函数,所以用str1
str1(1)="update tab set a=1 where …"
str1(2)="update tab set a=12 where …"
str1(3)="update tab set a=12 where …"
str1(4)="update tab set a=12 where …"
str1(5)="update tab set a=12 where …"
dim UpdateString as string
UpdateString = "BEGIN TRANSACTION" & chr(13) & chr(10)
for i=0 to 2000
updatestring=updatestring & str1(i+1) & chrw(13) & chrw(10)
next
updatestring = updatestring & "COMMIT TRANSACTION"
cn.execute updatestring
02 6th, 2010
dim cn as new adodb.connection
cn.open ""
str1="update tab set a=1 where …"
str2="update tab set a=12 where …"
str3="update tab set a=12 where …"
str4="update tab set a=12 where …"
str5="update tab set a=12 where …"
…
cn.execute str1
cn.execute str2
cn.execute str3
cn.execute str4
cn.execute str5
…
现在想把…包含的部分变成下列形式(但是下列的形式是错误的),请问如何实现。或帮我改易下页可以。
for i=0 to 2000
cn.execute str & (i+1)
next
为什么要写成上面的形式,我觉得这样好修改比较方便。另外不占地方.
dim str1(1 to 5) as string ' str是系统函数,所以用str1
str1(1)="update tab set a=1 where …"
str1(2)="update tab set a=12 where …"
str1(3)="update tab set a=12 where …"
str1(4)="update tab set a=12 where …"
str1(5)="update tab set a=12 where …"
for i=0 to 2000
cn.execute str1(i+1)
next
for i=0 to 2000
str="update tab set a=" & (i+1) & " where …"
cn.execute str
next
for i=0 to 2000
strsql="update tab set a=" & (i+1) & " where …"
cn.execute strsql
next
错误原因在于VB不支持直接使用指针。
延续1楼的思路,使用更有效率的批更新:
dim str1(1 to 5) as string ' str是系统函数,所以用str1
str1(1)="update tab set a=1 where …"
str1(2)="update tab set a=12 where …"
str1(3)="update tab set a=12 where …"
str1(4)="update tab set a=12 where …"
str1(5)="update tab set a=12 where …"
dim UpdateString as string
UpdateString = "BEGIN TRANSACTION" & chr(13) & chr(10)
for i=0 to 2000
updatestring=updatestring & str1(i+1) & chrw(13) & chrw(10)
next
updatestring = updatestring & "COMMIT TRANSACTION"
cn.execute updatestring
我是刚毕业的学生,学的是JAVA。但是我在Matlab中 把M文件转为COM时出错!弹的是JAVA的提示(附图)希望有高手帮忙解决下。谢谢了!我要完成VB与Matlab的结合。可是现在遇见这个问题不知道怎么解决了……希望高手帮我下!

我是刚毕业的学生,学的是JAVA。但是我在Matlab中 把M文件转为COM时出错!弹的是JAVA的提示(附图)希望有高手帮忙解决下。谢谢了!我要完成VB与Matlab的结合。可是现在遇见这个问题不知道怎么解决了……希望高手帮我下!
怎么看不到你的图啊?
好像没那么简单,呵呵.
10 14th, 2008
Dim StrAccDbName As String
Dim StrMdwFile As String
Dim StrAccPath As String
Dim StrPath As String
Dim StrUserName As String
Dim StrPassWord As String
StrAccPath = "C:Program FilesMicrosoft OfficeOFFICE11MSACCESS.EXE"
StrMdwFile = App.Path & "Security.mdw"
StrAccDbName = App.Path & "db1.mdb"
StrUserName = "administrator"
StrPassWord = "1"
StrPath = Chr(34) & StrAccPath & Chr(34) & " " _
& Chr(34) & StrAccDbName & Chr(34) & " " _
& "/wrkgrp " & Chr(34) & StrMdwFile & Chr(34) & " " _
& "/User " & Chr(34) & StrUserName & Chr(34) & " " _
& "/Pwd " & Chr(34) & StrPassWord & Chr(34)
Shell StrPath, vbMaximizedFocus
上面的代码是用SHELL打开带参数的MDB文件, 现在希望把Security.mdw以资源文件方式保存起来,加载到内存,再通过上面的SHELL调用,要求不能输出临时文件, 高手们帮帮忙,在此先谢了!!
这段代码是调用的ACCESS打开的MDB
貌似只要用ACCESS打开都会自动创建一个临时文件
Security.mdw 是ACCESS设置的安全保护文件,不会自动创建。 对db1.mdb设置后,没有Security.mdw文件和密码是无法打开db1.mdb的。起到安全保护数据的作用。但如果把Security.mdw以临时文件存在,就很容易用软件给破解了
不知文件映射能否实现上面的功能
不用临时文件,在VB中打开加了MDW的ACCESS文件
楼主是想合成单文件exe?
是保护MDW文件,从而实现对db1.mdb的数据保护
你们各人的技术分和技术分排名我咋就看懂?
这个问题貌似有点问题….既然是用shell执行,就必然要有一个被执行的文件实体…不然shell什么呢?不可能shell一堆内存里面的数据流吧….不过这个只是一己之见,或者可以通过其他方法实现的……
锤子是用来锤东西的,不能用来削苹果。
手机是用来打电话的,不能当作千斤顶。
你的目的是什么最好就说清楚。
不要因为你不知道用小刀可以削苹果,因为只见过锤子的缘故,
就想问别人怎么用锤子。
然后别人没头没脑的教了你用锤子的方法,你又可能说不是这样的。
最后才去问“怎么用锤子削苹果?”
然后大家才知道你的目的是想知道“什么东西可以削苹果?”
你的目的和你的解决方案并不一定是可行的。
所以你最好说清楚你的目的,不然没法答你的。
给大家出了个难题!
路径错了
chr(34) 是不是 ?
如果是的话,那路径就成了 app.path & & C:Program FilesMicrosoft OfficeOFFICE11MSACCESS.EXE
路径成了当前目录下的了,找不到就出错了,应该把 第1个 chr(34) 去掉
我的目的是不希望别人用现有的工具去破解Security.mdw文件,从而达到保护数据的安全
因此不希望输出临时文件,在内存中生成并用SHELL执行上面的参数。或者能否在内存中生成虚似内存磁盘,
把Security.mdw存放在内存磙盘里,再用SHELL执行调用
你的意思是不是想你的Access数据库只有你的程序能用,
其他人或程序不能想看到或是更改你的数据库?
如果是这样,方法多得是。
我倒。。。
这种问问题的方式真是生生不息。。。
也可以这样说,
必须用专用程序才能读取ACCESS文件,以达到数据的安全性
老兄不要生气
因为我经常与ACCESS打交道,比较注重其安全性
那你不如把Access文件修改一下开头的几个字节,让别的工具没法识别是mdb文件,启动你的程序的时候,再改过来,然后再连。
每个文件头都应该一至的吧,如果别人用对比工具对比一下,文件头也是不安全的
人家要破你的,你穿马甲也没用… 你穿的越多人家就对你里面穿啥内裤更感兴趣…
我也清楚没有什么不会被解破的
单纯学术方面讨论, 上面的代码能否在内存执行,我希望有个确切的答案
大家给点建议呀 !!
有个方法很简单,就是如果你不是用数据库的时候你就把数据库文件头20k的内容读出来。
然后加密保存到一个地方,然后将文件头20k的内容清空,当下次要使用数据库时,又将那
20k的信息头解密放回去,数据库打开时你就用独占方式打开。
这样你软件使用的时候别的程序没法打开数据库,当你的软件关闭后,他看到的只是少20K
文件头的数据库文件,也打不开了,呵呵
虽然这种方法也有弊端,而这些弊端可以不用考虑这么多的。因为在这个世界上,就没有绝
对安全的存在。
还有一种方法,就是产考FileDisk的虚拟磁盘范例,将它的驱动部分改改,只允许你的程序
访问你的虚拟驱动器内容。这样整个虚拟磁盘提供文件数据的大权都在你手,爱怎么限制就怎么限制。
不过FileDisk是C的程序。
C 不会呀, VB有没有类似的范例
DX 帮帮忙呀
我的问题跟这个是一样的
http://topic.csdn.net/u/20081012/10/c517af37-3e94-4b6a-b650-2ab5ab27ce5c.html
难道VB没法解决…………..
那么你自己解析MDB格式怎样?
每个需要保护的MDB,都用你的程序处理后,内容加密.
然后只有你自己的程序才能打开.
这样不就行了.
不过如果你的那些数据如果没有要求非要与ACCESS兼容的话,就干脆自己整一个格式,内容加密…..再写个转换程序,把MDB内容转换成你的格式…..
内容加密,数据量大时,速度是个问题
直接在内存操作(shell 调用 内存的mdw) ,是否我的想法不能实现
或者VB无能为力 C 行吗
先结贴
07 7th, 2008
dim aa as String
aa="call bb()"
请问如何让aa里的内容被执行
- VB code
-
学习…….
script控件
参考: http://topic.csdn.net/t/20040610/13/3080342.html
Private Sub Command1_Click()
Text1.Text="bb"
ScriptControl1.Reset
Call ScriptControl1.AddCode(Text1.Text)
End Sub
Private Sub bb()
MsgBox "asasdasd"
End Sub
为什么一加子程序,就出现类型不匹配问题
Private Sub Command1_Click()
Text1.Text = "bb"
CallByName Form1, Text1.Text, VbMethod
End Sub
Public Function bb()
MsgBox "asasdasd"
End Function
Private Sub Command1_Click()
Text1.Text = "bb"
CallByName Form1, Text1.Text, VbMethod
End Sub
Public Function bb() '一定要注意,此处要用 Function .不能用 Sub
MsgBox "asasdasd"
End Function
因此,你用控件可以也是相同的原因,如果你改为 Function应该会好的.
感谢fvflove,终于不解决的办法了!!!