现在的位置: 首页 >> 数据库 >> Access >> 设置只有管理员才能改变AllowBypassKey属性
添加时间:2005-8-16 来源:网教中国 作者:
设置只有管理员才能改变AllowBypassKey属性


tmtony翻译:

在ACCESS的帮助文件中说明CreateProperty 方法的语法:

Set property = object.CreateProperty (name, type, value, DDL)
其实最后一个参数是这个解释的(部分描述):

DDL 可选. 一个变量(逻辑子类型) 指定这个属性是否为DDL对象. 缺少值为False. 如果设置为TRUE,除非他有 dbSecWriteDef 权限,用户就不能改变或删除这个属性
CreateProperty 是用来创建或设置 AllowBypassKey 属性如果这个属性设为TRUE, 那就可以禁用户近SHIFT键来禁止启动属性和AutoExec 宏. 然而,ACCESS帮助中提供的例子没有使用第四个 DDL 参数. 这意味着任何人都可以打开数据据然后用程序复位AllowBypassKey 属性.

所以,为了限制普通用户去改变这个属性,所以我们设置第四个参数为TRUE 。

为了对比,我们也同时列出了ACCESS本身的例子以便参照

' *********** Code Start ***********
Function ChangePropertyDdl(stPropName As String, _
PropType As DAO.DataTypeEnum, vPropVal As Variant) _
As Boolean
' Uses the DDL argument to create a property
' that only Admins can change.
'
' Current CreateProperty listing in Access help
' is flawed in that anyone who can open the db
' can reset properties, such as AllowBypassKey
'
On Error GoTo ChangePropertyDdl_Err

Dim db As DAO.Database
Dim prp As DAO.Property

Const conPropNotFoundError = 3270

Set db = CurrentDb
' Assuming the current property was created without
' using the DDL argument. Delete it so we can
' recreate it properly
db.Properties.Delete stPropName
Set prp = db.CreateProperty(stPropName, _
PropType, vPropVal, True)
db.Properties.Append prp

' If we made it this far, it worked!
ChangePropertyDdl = True

ChangePropertyDdl_Exit:
Set prp = Nothing
Set db = Nothing
Exit Function

ChangePropertyDdl_Err:
If Err.Number = conPropNotFoundError Then
' We can ignore when the prop does not exist
Resume Next
End If
Resume ChangePropertyDdl_Exit
End Function

帮助本身的例子
Function ChangeProperty(strPropName As String, _
varPropType As Variant, varPropValue As Variant) As Integer
' The current listing in Access help file which will
' let anyone who can open the db delete/reset any
' property created by using this function, since
' the call to CraeteProperty doesn't use the DDL
' argument
'
Dim dbs As Database, prp As Property
Const conPropNotFoundError = 3270

Set dbs = CurrentDb
On Error GoTo Change_Err
dbs.Properties(strPropName) = varPropValue
ChangeProperty = True

Change_Bye:
Exit Function

Change_Err:
If Err = conPropNotFoundError Then ' Property not found.
Set prp = dbs.CreateProperty(strPropName, _
varPropType, varPropValue)
dbs.Properties.Append prp
Resume Next
Else
' Unknown error.
ChangeProperty = False
Resume Change_Bye
End If
End Function
' *********** Code End ***********

上一篇:破解Access(*.mdb)目前所有版本的密码 下一篇:在Access中实现密码管理的另一种方式
大部分文章摘自网上,如有侵犯您的权益请与我们联系,我们会第一时间进行处理,谢谢! [ 打印文章 ] [ 关闭窗口 ]
推荐文章
·ACCESS中使用SQL语句应注意的地
·用CELL组件显示Access数据库的图
·怎样可以从ACCESS中打印一个WORD
·加解密文本的函数
·防止Access 2000密码被破译的方
·Access安全性之QA详解
·处理加了密码的MDB文件
·在Access中实现密码管理的另一种
·时间格式在sql server中更新带来
·如何定义自动编号字段的初始值和
相关文章
 
最新文章
·在Delphi中的Access技巧集
·两个未公开的ACCESS方法的使用技
·一个ACCESS数据库数据传递的方法
·Access 2002的三个实用技巧
·access中数据表的自动重新联接
·OrdinalPosition 属性示例
·判断一个字段是否在表中的函数
·Access数据有效性检查
·ACCESS中使用SQL语句应注意的地
·在窗体间传递参数的几种常用办法
Google