Office中国论坛/Access中国论坛

标题: VB建壳技术之指定工作组启动MDB项目详解(技术交流) [打印本页]

作者: tanhong    时间: 2008-10-11 15:17
标题: VB建壳技术之指定工作组启动MDB项目详解(技术交流)
一、前言


1.1
VBAccess进行项目开发之初衷

Access因操作简便、直观,以及强大的功能,而得到许多数据库开发者的推崇,不过 Access 也有一定的局限性,如:Access开发平台开发的项目,无法完全编译并脱离Access系统环境;宏的安全级别限制有时让我们项目不能顺利启动,在分发项目时,需要我们手动对Access逐一手动设置等。

为弥补 Access 某些不尽如人意的地方,我尝试着用 VB与 Access 结合,用以自动完成Access系统环境设置,如:修改宏安全级别避开限制启动MDB项目,或指定工作组启动 MDB 项目等。

1.2 配置要求:


1.3
本文要点:

二、使用 Security Wizard 设置 Access 数据库的安全性

   我们通常会通过设置数据库密码、设置模块密码或将mdb文件转换为 mde 文件等方法来保护数据库的安全,以上方法能最大限度保护数据库的安全,但上述方法在网络的多人使用环境中有一定局限性,不能针对不同的用户,提供对于数据库对象不同的访问及管理权限。

解决方案就是建立“工作组”,那什么是“工作组”呢?通俗的说,“工作组”就是将用户按级别编成不同的“组”,并为不同组设定不同数据库访问及管理权限,并将这些设置存放在一个后缀为MDW的文件中,这个文件就是工作文件。只是建立工作组需一系列的操作,如果你不是很明了,会让你无所适从,为此Access为我们提供了友好的“设置安全机置向导”,让你轻松“一点”搞定。

          2.1 “安全机制向导”具体操作步骤:

    1、打开数据库,点菜单 工具—安全—设置安全机制向导,打开向导。

[attach]32619[/attach]



   2、在对话框中单下一步,其中一些默认选项不用做修改,直至下图这一步很关键(见下图),你可选择已有用户,并设定密码,你也可以添加新用户,并为添加用户设定密码,剩下就是点下一步直至最后完成就好了。

[attach]32620[/attach]



    完成后,会在mdb文件所在文件夹产生另两个文件(见下图),后缀mdw 的文件为工作组文件,后缀bak 的文件为 mdb 备份文件。你必须记住,用户名:tan 密码:123,这可是我们后面指定工作组打开mdb关键。
[attach]32621[/attach]
(未完待续)



[ 本帖最后由 tanhong 于 2008-10-11 17:05 编辑 ]
作者: tanhong    时间: 2008-10-11 15:22
三、VB建壳指定工作组启动MDB项目

3.1 了解指定工作组启动MDB项目命令

    下面是一段指定工作组启动MDB项目命令实例(见下图),你可以直接将以下命令粘贴到运行对话框运行。


  1. "C:\Program Files\Microsoft Office\OFFICE11\msaccess.exe " "D:\例程\ADDRBOOK.mdb" /wrkgrp "D:\例程\Security.mdw" /user tan /pwd 123
复制代码


3.2 指定工作组启动MDB需要解决的几个问题:


  1. '申明ACCESS对象类
  2. Dim objAccess  As  Access.Application
  3. '创建ACCESS实例对象
  4. Set objAccess = CreateObject("ACCESS.Application")
  5. '通过access对象属性,获得当前access版号
  6. strVer = objAccess.Version
  7. '退出ACCESS,并释放内存
  8. objAccess.Quit
  9. Set objAccess = Nothing
复制代码

        实例代码:

  1. '*************************************************************************
  2. ' 函 数 名:SetRegLevel
  3. '-------------------------------------------------------------------------
  4. ' 功能描述:修改ACCESS安全级别在注册表键值.
  5. ' 输    入:blnSetReg (Boolean) ,false为低,true为中
  6. ' 输    出:无
  7. ' 调用模块:RegWrite '写注册表操作自定义函数,用以修改安全级别键值
  8. ' 编  程:江羽
  9. ' 日    期:2008-10-09
  10. '*************************************************************************
  11. Public Function SetRegLevel(blnSetReg  As Boolean)
  12.     Dim strRegSec As String   '字符串变量,安全设置键值所在注册表路径
  13.     Dim strVer As String      '当前ACCESS版号字符串变量
  14.     On Error Resume Next
  15.     '创建ACCESS对象
  16.     Set objAccess = CreateObject("ACCESS.Application")
  17.     '获得当前office版号
  18.     strVer = objAccess.Version
  19.    '退出ACCESS,并释放内存
  20.     objAccess.Quit
  21.     Set objAccess = Nothing
  22.    '将注表路径赋值给变量
  23.     strRegSec = "HKEY_CURRENT_USER\Software\Microsoft\Office" & _
  24.                  strVer & "\access\Security\Level"
  25.    'RegWrite 自定义函数,用以写入键值操作
  26.    '键值1为低,2为中,3为高
  27.     If blnSetReg = False Then
  28.        RegWrite strRegSec, 1
  29.     Else
  30.        RegWrite strRegSec, 2
  31.     End If
  32. End Function
复制代码

(未完待续)


[ 本帖最后由 tanhong 于 2008-10-11 15:37 编辑 ]
作者: tanhong    时间: 2008-10-11 15:24
  1. '*************************************************************************
  2. ' 过 程 名:OpenWmdMdb
  3. '-------------------------------------------------------------------------
  4. ' 功能描述:首选修改宏安全级别限制,其次指定工作组打开mdb项目过程
  5. ' 输 入:blnSetReg (Boolean)
  6. ' 输 出:无
  7. ' 调用模块:SetRegLevel '写注册表操作自定义函数,用以修改安全级别键值
  8. ' OpenWmdAcc '指定工作组并启动mdb项目
  9. ' 编  程:江羽
  10. ' 日 期:2008-10-09
  11. '*************************************************************************
  12. Sub OpenWmdMdb()
  13. '关闭宏安全级别限制
  14. SetRegLevel False
  15. '指定工作组启动mdb项目,用户名:tan,密码:123,是建立工作组时自己设定的
  16. OpenWmdAcc "ADDRBOOK.mdb", "Security.mdw", "tan", "123"
  17. '开启中宏安全级别限制
  18. SetRegLevel True
  19. End Sub
复制代码
(未完待续)

[ 本帖最后由 tanhong 于 2008-10-11 15:36 编辑 ]
作者: tanhong    时间: 2008-10-11 18:00
3.3最终完成建壳,并编译为EXE
[attach]32623[/attach]


[attach]32624[/attach]

[attach]32625[/attach]

  1. '*************************************************************************
  2. ' 过 程 名:Timer1_Timer
  3. '-------------------------------------------------------------------------
  4. ' 功能描述:计时器控件,计时触发事件,用以延时关闭窗体
  5. ' 输    入:无
  6. ' 输    出:无
  7. ' 调用模块:OpenWmdMdb '
  8. ' 编  程:江羽
  9. ' 日    期:2008-10-09
  10. '*************************************************************************
  11. Private Sub Timer1_Timer()
  12.    Unload Me           '关闭窗体
  13.    Call OpenWmdMdb   '调用指定工作组启动mdb项目模块
  14. End Sub
复制代码



  • 编译成EXE应用程序,点菜单文件—生成工程1.exe,你就大功告成了。(见下图)运行窗体结果
[attach]32626[/attach]



    本文到此划上句号。特别申明由于本人技术有限,加之文字功力不济,不免有错漏或是表述不清的地方,还请大家斧正,更欢迎大家的相互交流。如果本文对于您有所帮助,那是我莫大的快慰。

本文实例可在office中国江羽博客下载,并附赠VB源码。



                                                                         (全文结束)

                                                                                            Office中国.江羽
                                                                                                2008-10-11


Word版文稿下载:[attach]32627[/attach]


(实例及源码)VB建壳技术之指定工作组启动MDB项目


[ 本帖最后由 tanhong 于 2008-10-11 18:05 编辑 ]

作者: tonyjx    时间: 2008-10-11 19:23
不错不错,学习了,
作者: df    时间: 2008-10-12 23:33
不错,学习
作者: beenet    时间: 2008-10-13 14:13
谢谢 学习学习
作者: 明镜    时间: 2008-10-24 19:33
谢谢了,好好学习一下.
作者: KerryHuang    时间: 2008-10-24 20:31
感谢楼主的辛勤劳动[:50]
作者: coolleaf    时间: 2008-10-30 11:28
谢谢了,我正是想要一个壳的。
作者: auluolal    时间: 2009-1-7 17:47
谢谢,学习中
作者: 展飞    时间: 2009-5-24 19:26
版主:你好!
请问为什么这句 “Set objAccess = CreateObject("ACCESS.Application") ”会出现“编译错误:无效外部过程”?
Micfrosoft ACCESS 11.0 Object library 已引用。
谢谢指导。
作者: 风啸啸    时间: 2009-7-19 20:13
收藏学习
作者: Morgen    时间: 2009-8-8 16:46
学习了,谢谢!
作者: lanshai    时间: 2009-8-10 12:24
thanks!
作者: yyxxx116633    时间: 2009-9-17 16:24
谢谢
作者: fytxcf    时间: 2009-9-20 15:54
aaaaaaaaa
作者: taofbjty2    时间: 2009-9-28 21:24
学习,看看
作者: xie62    时间: 2010-6-20 07:55
谢谢 学习学习
作者: hupingrenjia    时间: 2010-6-25 08:02
学习中。
作者: leijiqiang    时间: 2010-7-5 13:28
写得真得不错
作者: zhuyiwen    时间: 2012-8-22 08:26
非常好的教程,顶一个!
作者: access新新新手    时间: 2015-12-10 08:33
谢谢分享




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3