VB程序员博客
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 行吗
先结贴