设置只有管理员才能改变AllowBypassKey属性
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-03-19
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 *********** |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于设置只有管理员才能改变AllowBypassKey属性的所有评论