[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
?
Solved

Disable Shift Key

Posted on 2009-12-17
4
Medium Priority
?
574 Views
Last Modified: 2012-05-08
Hello Everyone, I am a database used both in Access 2003 & 2007, Is there a way to disable a user from pressing the Shift key or the PF11 Key and gain access to the Tables?
0
Comment
Question by:joeserrone
  • 2
4 Comments
 
LVL 8

Expert Comment

by:hello_everybody
ID: 26076108

To prevent a user bypassing the start-up options you will need to apply the following function and code to a command button (or ideally a hidden option, such as to the double-click event of a label or graphic).

This will prevent anyone without the password bypassing the start-up by using the Shift key.

The below function and command button code will allow you to use a password protected input box to determine if the Shift key can be disabled or not.

You might have to set your "References" in the VBA editor to DAO 3.6.

When you are viewing a Module, click the Tools menu » References. Browse for Microsoft DAO 3.6

Select "Files of type: Executable Files (*.exe; *.dll)"

C:\Program Files\Common Files\Microsoft Shared\DAO)

Then explicitly dimension yourcode, i.e. Dim db As DAO.Database, prp As DAO.Property

'***************** Code Start ***************
'Copy this function into a new public module.

Option Compare Database
Option Explicit

Public Function SetProperties(strPropName As String, _
varPropType As Variant, varPropValue As Variant) As Integer

    On Error GoTo Err_SetProperties

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

    Set db = CurrentDb
    db.Properties(strPropName) = varPropValue
    SetProperties = True
    Set db = Nothing

Exit_SetProperties:
    Exit Function

Err_SetProperties:
    If Err = 3270 Then    'Property not found
        Set prp = db.CreateProperty(strPropName, varPropType, varPropValue)
        db.Properties.Append prp
        Resume Next
    Else
        SetProperties = False
        MsgBox "SetProperties", Err.Number, Err.Description
        Resume Exit_SetProperties
    End If
End Function
'***************** Code End ***************
Once you have created the module, then you will need to attach the following code to a command button (or label, graphic etc.):

'***************** Code Start ***************
'Assign this to the OnClick event of a command button (or double-click event
'of a label or graphic) named "bDisableBypassKey"
'Change the "TypeYourBypassPasswordHere" default password to your password

Private Sub bDisableBypassKey_Click()
    On Error GoTo Err_bDisableBypassKey_Click
    'This ensures the user is the programmer needing to disable the Bypass Key
    Dim strInput As String
    Dim strMsg As String
    Beep
    strMsg = "Do you want to enable the Bypass Key?" & vbCrLf & vbLf & _
             "Please key the programmer's password to enable the Bypass Key."
    strInput = InputBox(Prompt:=strMsg, title:="Disable Bypass Key Password")
    If strInput = "TypeYourBypassPasswordHere" Then
        SetProperties "AllowBypassKey", dbBoolean, True
        Beep
        MsgBox "The Bypass Key has been enabled." & vbCrLf & vbLf & _
               "The Shift key will allow the users to bypass the startup & _
               options the next time the database is opened.", _
               vbInformation, "Set Startup Properties"
    Else
        Beep
        SetProperties "AllowBypassKey", dbBoolean, False
        MsgBox "Incorrect ''AllowBypassKey'' Password!" & vbCrLf & vbLf & _
               "The Bypass Key was disabled." & vbCrLf & vbLf & _
               "The Shift key will NOT allow the users to bypass the & _
               startup options the next time the database is opened.", _
               vbCritical, "Invalid Password"
        Exit Sub
    End If
Exit_bDisableBypassKey_Click:
    Exit Sub
Err_bDisableBypassKey_Click:
    MsgBox "bDisableBypassKey_Click", Err.Number, Err.Description
    Resume Exit_bDisableBypassKey_Click
End Sub
'***************** Code End ***************Once this is in place, a user will not have access to bypass the Start-Up options.

As the administrator, you can then click on your command button, label or graphic and will be presented with a input box prompt to enter the bypass password: Please key the programmer's password to enable the Bypass Key.

If the correct password is entered you will see a message: The Shift key will allow the users to bypass the startup  options the next time the database is opened. 

An inncorrect password will give the following message and not allow the Shift key to bypass the Start-Up options: The Bypass Key was disabled. 
The Shift key will NOT allow the users to bypass the  startup options the next time the database is opened. 

Note: Always create a backup copy of the database, to test out any areas that may cause problems when working with start-up options or disabling Access features.

Open in new window

0
 
LVL 8

Expert Comment

by:hello_everybody
ID: 26076133

Or:

1. Create a new module and past this code inside it:

Option Compare Database
Option Explicit


Function ChangeProperty(strPropName As String, varPropType As Variant, varPropValue As Variant) As Integer
   Dim dbs As Object, prp As Variant
   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
'----------------------------------------------------------------------

Function BypassKey(onoff As Boolean)
   Const DB_Boolean As Long = 1
   ChangeProperty "AllowBypassKey", DB_Boolean, onoff
End Function
'-----------------------------------------------------------------------Then save the module to whatever you like.

2. Create the macros.
2.1 Macro Name: ByPassKeyOff
Action: Runcode
Function: BypassKey(False)
2.2 Macro Name: ByPassKeyOn
Action: Runcode
Function: BypassKey(True)

3. On your switchboard or logon screen create a rectangle with the same backcolor as the form and no border. Remember where it is. Or if you have a picture you can use it aswell. On the properties of the rectangle or picture select the Event tab->OnClick. Use the picker to select the ByPassKeyOn macro.

4. Run the ByPassKeyOff macro. Save and close the db.

5 Now when you start up and hold the shift key the db window will not show. To allow the shift key click where you put your rectangle or click the picture and close the db. Re-open with the shift key and the database window will appear. To disable do step 4.

There you go. Just another way to make sure your database is secure. 

Open in new window

0
 
LVL 75

Accepted Solution

by:
DatabaseMX (Joe Anderson - Microsoft MVP, Access and Data Platform) earned 2000 total points
ID: 26076765
Here is a link with a sample database that has everything you need ... allows you to enable and disable - from another MDB ... to a target mdb:

http://www.members.shaw.ca/AlbertKallal/msaccess/msaccess.html

Scroll down to 'By Pass Shift Key Code'

Another good link:

http://www.databasedev.co.uk/disable_shift_bypass.html

mx
0
 

Author Closing Comment

by:joeserrone
ID: 31667552
All great examples and links
0

Featured Post

Fill in the form and get your FREE NFR key NOW!

Veeam is happy to provide a FREE NFR server license to certified engineers, trainers, and bloggers.  It allows for the non‑production use of Veeam Agent for Microsoft Windows. This license is valid for five workstations and two servers.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In Part II of this series, I will discuss how to identify all open instances of Excel and enumerate the workbooks, spreadsheets, and named ranges within each of those instances.
Microsoft Access has a limit of 255 columns in a single table; SQL Server allows tables with over 255 columns, but reading that data is not necessarily simple.  The final solution for this task involved creating a custom text parser and then reading…
In Microsoft Access, learn how to “cascade” or have the displayed data of one combo control depend upon what’s entered in another. Base the dependent combo on a query for its row source: Add a reference to the first combo on the form as criteria i…
Polish reports in Access so they look terrific. Take yourself to another level. Equations, Back Color, Alternate Back Color. Write easy VBA Code. Tighten space to use less pages. Launch report from a menu, considering criteria only when it is filled…
Suggested Courses

873 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question