2010-11-15 22 views
4

Problème: Dans MS Access, vous pouvez maintenir la touche shift lors ouverture une base de données afin de by-pass de démarrage options et la AutoExec Script. Je veux désactiver cela définitivement. Tout d'abord, je sais que cela a été répondu sur de nombreux autres sites, mais je n'ai pas trouvé de question à ce sujet ici, mais j'ai un besoin légèrement différent. Les solutions que j'ai trouvées étaient axées sur la mise en place de boutons invisibles. activer le raccourci clavier avec des mots de passe etc.désactiver la touche Maj au démarrage en ms accès

Je veux un solution très simple. Je veux un script que je peux ajouter à mon script AutoExec pour désactiver le raccourci clavier ou quelque chose comme ça.

I N'a PAS besoin d'un moyen de réactiver le raccourci clavier.

Le plus simple , la plupart sécurisé et plus facile façon de le faire est préféré.

Merci!

+0

Avez-vous vérifié le fichier d'aide VBE Access sous AllowBypassKey? Le code pour cela est fourni dans le fichier d'aide. En ce qui concerne la sécurité, il s'agit d'un casse-tête différent, car toute personne disposant d'un peu de connaissances en programmation pourrait désactiver vos paramètres, même si vous avez sécurisé votre frontal en utilisant la sécurité au niveau de l'utilisateur Jet. –

+0

non désolé, je ne savais même pas qu'il y avait un fichier d'aide. J'utilise très peu l'accès et fais des visual basic basiques dans l'accès encore moins. Faites principalement des trucs de type .net et MsSql. Merci néanmoins pour l'info. – kralco626

Répondre

5

J'ai toujours utilisé ce morceau de code

Function SetBypass(rbFlag As Boolean, File_name As String) As Integer 
    DoCmd.Hourglass True 
    On Error GoTo SetBypass_Error 
    Dim db As Database 
    Set db = DBEngine(0).OpenDatabase(File_name) 
    db.Properties!AllowBypassKey = rbFlag 
setByPass_Exit: 
    MsgBox "Changed the bypass key to " & rbFlag & " for database " & File_name, vbInformation, "Skyline Shared" 
    db.Close 
    Set db = Nothing 
    DoCmd.Hourglass False 
    Exit Function 


SetBypass_Error: 
    DoCmd.Hourglass False 
    If Err = 3270 Then 
     ' allowbypasskey property does not exist 
     db.Properties.Append db.CreateProperty("AllowBypassKey", dbBoolean, rbFlag) 

     Resume Next 
    Else 
     ' some other error message 
     MsgBox "Unexpected error: " & Error$ & " (" & Err & ")" 
     Resume setByPass_Exit 
    End If 
End Function 

Vous passez un nom de fichier puis dire si vous voulez que la clé de dérivation pour être activé ou non.

Le problème est que n'importe qui d'autre avec ce code peut l'utiliser pour "déverrouiller" votre base de données et activer la clé de contournement.

La seule façon que je peux penser de contourner ce serait seulement donner aux utilisateurs la version d'exécution d'accès

+0

où/comment exécuter ce script? et si je le faisais et que le fichier d'accès était en lecture seule, cela les empêcherait-il de le changer? – kralco626

+0

Vous pouvez le placer dans une base de données "Utilitaire" séparée ou vous pouvez le placer dans un module sur vos bases de données existantes. Vous l'appelez comme ceci SetBypass False, "C: \ MyDatabase.mdb" –

+1

a bien fonctionné. J'ai mis ce code dans un nouveau module et ai mis cette ligne de code dans ma fonction de chargement de formulaire. Le formulaire est chargé par le script autoexec afin qu'il s'exécute chaque fois que la base de données est ouverte. – kralco626