You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Access如何在登录窗体VBA代码中硬编码高权限用户名与密码

Access登录功能硬编码高权限账号修改方案

实现逻辑

  • 在原有数据库账号校验逻辑前新增硬编码账号判断,匹配成功直接跳过数据库查询完成登录
  • 原有普通用户的登录逻辑完全保留,不影响现有业务使用
  • 硬编码账号默认授予最高管理员权限,自动开启Ribbon工具栏适配调试需求

修改后完整代码

Private Sub cmdLogin_Click()
On Error GoTo cmdLogin_ClickErr
    ' 硬编码高权限账号校验
    If Me.txtUserName = "Developer" And Me.txtPassword = "One" Then
        TempVars.Add "UserName", "Developer"
        TempVars.Add "Password", "One"
        TempVars.Add "Admin", True
        TempVars.Add "ReadOnly", False
        TempVars.Add "StdUser", False
        DoCmd.ShowToolbar "Ribbon", acToolbarYes
        DoCmd.Close acForm, Me.Name
        DoCmd.OpenForm "FRMMenuMain"
        DoEvents
        Exit Sub
    End If

    Dim rs As Recordset
    Set rs = CurrentDb.OpenRecordset("Select * From TLKPeople Where Username =  '" & Me.txtUserName & "' And Password = '" & Me.txtPassword & "'")
    If Not rs.EOF Then
        TempVars.Add "UserName", rs!UserName.Value
        TempVars.Add "Password", rs!Password.Value
        TempVars.Add "Admin", rs!Admin.Value
        TempVars.Add "ReadOnly", rs!ReadOnly.Value
        TempVars.Add "StdUser", rs!STDUser.Value
          If Nz(TempVars!UserName, 0) = "Developer" Then
             DoCmd.ShowToolbar "Ribbon", acToolbarYes
           End If
        DoCmd.Close acForm, Me.Name
        DoCmd.OpenForm "FRMMenuMain"
        DoEvents

    Else
        MsgBox "登录失败,请检查用户名和密码!", vbOKOnly, "登录失败"
    End If
    rs.Close
    Set rs = Nothing


Exit Sub

cmdLogin_ClickErr:
    MsgBox ("错误:" & Err.Number & " " & Err.Description)
End Sub

注意事项

  1. 硬编码账号存在安全风险,VBA代码可被反编译获取账号密码,仅适合个人调试场景使用,生产环境不建议采用该方案
  2. 原有代码存在SQL注入风险,恶意用户可通过输入特殊字符绕过登录校验,正式使用建议改为参数化查询规避漏洞

内容的提问来源于stack exchange,提问作者Kevin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 17:39:01