Avatar billede weinreich Nybegynder
31. oktober 2002 - 14:48 Der er 4 kommentarer og
3 løsninger

AllowBypassKey Part Two

Dette er mere eller mindre en forlængelse af spørgsmål http://www.eksperten.dk/spm/275072 som jeg oprettede i sidste uge. Jeg spurgte til noget sikkerhed ved Access databaser men jeg har stadig nogle spørgsmål.
Når man starter min database går den igennem en form som checker brugernavnet og lukker dig ind hvis du har tilladelse. MEN så er der jo lige shift der leder en uden om alt hvad der hedder start-up og jeg fik at vide at jeg kunne bruge følgende information:
http://www.mvps.org/access/general/gen0040.htm
men det kan jeg bare ikke. Ikke at jeg ikke kan bruge det, det kan jeg sikkert men jeg fatter ikke en skid :) for nu at sige det som det er. Hvordan skal jeg ligge denne kode ind i databasen der låser BypassKey'en og kan jeg gøre det på den enkelte database uden at skulle gøre det på alle de andre databaser jeg arbejder på, OG i hvordan skal det forstås med at jeg skal lade en bagdør være åben (jeg ved godt at jeg skal have en bagdør men hvordan gøres det). I det hele taget ønskes hjælp i et let forståeligt sprog.
Mange mange tak Weinreich
Avatar billede weinreich Nybegynder
31. oktober 2002 - 17:01 #1
Ok nu har jeg siddet og rodet med det her i MEGET LANG tid. Jeg har fundet frem til at det er en property på selve databasen jeg skal have ændret. Jeg regner med at jeg laver en form som har en knap der ændrer denne property. Så laver jeg en MDE-fil og trykker derefter på knappen så den bliver låst og ikke kan låses op igen, men jeg mangler den kode som skal lægges på knappen. Hvordan laver jeg den kode som skal gå ind og oprette en property og appende den til databasen? Jeg vil meget gerne have hjælp.
Avatar billede terry Ekspert
31. oktober 2002 - 18:22 #2
Quick anser as I am pushed for time.
Make your program to an MDE file and it is going to stop everyone getting to the code. Then make your own menu and use this instead of the standard.
Avatar billede hekla Nybegynder
31. oktober 2002 - 23:06 #3
Jeg kan ikke huske hvor jeg har nedenstående kode fra, men det er ikke noget som jeg selv har lavet.
Sæt det ind i et modul, og lav to makroer. Én som afspiller koden: fhpSetDistributeProperties() og én som afspiller koden: fhpremoveDistributeProperties(). Når du skal lukke databasen, så man ikke kan komme ind til koden, skal du først gå ind i Funktioner-Start og fjerne alle vingerne. Derefter skal du afspille den makro, som afspiller koden fhpSetDistributeProperties().
Du skal endelig huske navnet på makroen som afspiller koden fhpremoveDistributeProperties(), for det er din eneste vej ind i databasen(bagdøren). Hvis du skal åbne databasen igen skal du fra menuen Start-Kør... skrive:
c:\....\access.exe "c:\...\mindatabase.mdb" /x minmakro
hvor første del er stien til access og anden del er stien til din database.
minmakro er makroen, som afspiller fhpremoveDistributeProperties().



Public Function fhpChangeProperty(strPropName As String, varPropType As Variant, _
                                  varPropValue As Variant) As Integer
' -----------------------------------------------------------------------------------
' Purpose      : Changes properties on applicationobject
' Called from  :
' Returns      :
' Remarks      :
' -----------------------------------------------------------------------------------
On Error GoTo Error_fhpChangeProperty
  Dim dbs As DAO.database
  Dim prp As DAO.Property
  Const conPropNotFoundError As Long = 3270
  Set dbs = CurrentDb
 
  dbs.Properties(strPropName) = varPropValue
  fhpChangeProperty = True

Exit_fhpChangeProperty:
  Set dbs = Nothing                                        'Release object
  Exit Function

Error_fhpChangeProperty:
  If Err = conPropNotFoundError Then                        'Prop not found
    Set prp = dbs.CreateProperty(strPropName, varPropType, varPropValue)
    dbs.Properties.Append prp
    Resume Next
  Else                                                      'Unkown error
    fhpChangeProperty = False
    Resume Exit_fhpChangeProperty
  End If

End Function

Public Function fhpSetDistributeProperties() As Integer
' -----------------------------------------------------------------------------------
' Purpose      : Sets different startupproperties for this applikation
' Called from  :
' Returns      :
' Remarks      : Prepare application for distribution
' -----------------------------------------------------------------------------------
  Dim intX As Integer                              'Test variable
 
  fhpChangeProperty "StartupShowDBWindow", dbBoolean, False
  'hpChangeProperty "StartupShowStatusBar", dbBoolean, True
  'hpChangeProperty "AllowBuiltinToolbars", dbBoolean, False
  'hpChangeProperty "AllowFullMenus", dbBoolean, False
  fhpChangeProperty "AllowBreakIntoCode", dbBoolean, False
  'hpChangeProperty "AllowSpecialKeys", dbBoolean, True
  fhpChangeProperty "AllowBypassKey", dbBoolean, False
  Application.SetOption ("Perform name AutoCorrect"), False          'No autocorrect
  Application.SetOption ("Track name AutoCorrect info"), False        'No tracking of autocorrect
 
End Function  'SetStartupProperties

Public Function fhpRemoveDistributeProperties() As Integer
' -----------------------------------------------------------------------------------
' Purpose      : Sets different startupproperties for this applikation
' Called from  :
' Returns      :
' Remarks      : Undistributing application for further development
' -----------------------------------------------------------------------------------
  fhpChangeProperty "StartupShowDBWindow", dbBoolean, True
  fhpChangeProperty "StartupShowStatusBar", dbBoolean, True
  fhpChangeProperty "AllowBuiltinToolbars", dbBoolean, True
  fhpChangeProperty "AllowFullMenus", dbBoolean, True
  fhpChangeProperty "AllowBreakIntoCode", dbBoolean, True
  fhpChangeProperty "AllowSpecialKeys", dbBoolean, True
  fhpChangeProperty "AllowBypassKey", dbBoolean, True

End Function  'RemoveDistributeProperties
Avatar billede hugopedersen Nybegynder
01. november 2002 - 08:13 #4
Den kode vil jeg godt erkende at have skrevet :-)
01. november 2002 - 08:34 #5
Hej Weinreich,

Det er muligt, at du allerede har fået hjælp fra Hekla, men jeg vil lige supplere lidt, da jeg selv benytter en funktion, som er en del kortere:

Public Function AllowBypassKeys(Allow As Boolean)
    '"AllowBypassKey", dbBoolean, True

    Dim dbs As Database, prp As Property
    Const conPropNotFoundError = 3270
    Set dbs = CurrentDb
    On Error GoTo Change_Err
    dbs.Properties("AllowBypassKey") = Allow
Change_Bye:
    Exit Function
Change_Err:
    If Err = conPropNotFoundError Then  'property not found
        Set prp = dbs.CreateProperty("AllowBypassKey", _
        dbBoolean, Allow)

dbs.Properties.Append prp
        Resume Next
    Else
        'unknown error
        Resume Change_Bye
    End If
End Function


Denne funktion kræver blot en reference til Microsoft DAO.

Du bruger den på den måde, at du f.eks. i din Autoexec-makro laver en handling: AfspilKode - AllowBypassKeys(False)

Du skal således bare starte databasen op lige inden du distribuere databasen til brugerne.

Mht en 'Bagdør', så plejer jeg at lave en makro, som jeg kalder Autokeys
I denne makro laver jeg 2 handlinger:
1) I kolonnen 'Makronavn' skrives: ^{F12}
Kolonnen makronavn frembringes ved at gå i menuen Vis->Makronavn
Handling sættes til: AfspilKode med argumentet AllowBypassKeys(True)
2) Beep

Derved kan du altid trykke Ctrl+F12 for at slå ByPasskeys til igen. Derefter kan du lukke databasen og starte den op igen med Shift-tasten nede.
01. november 2002 - 08:40 #6
Hvis der IKKE kommer et Beep, når du trykker Ctrl+F12, så skyldes det muligvis at din Access ikke genkender AutoKeys som din Genvejstast-makro.

Dette problem løser du ved at gå i Debug-vinduet (Ctrl+G) og skrive:

Application.Setoption "Key assignment macro","Autokeys"

Det er en god ide at tage backup af databasen inden dette aktiveres.

Men sålænge du ikke har sat kryds i "Tillad Access specialtaster" i Start-dialogboksen, så kan du jo altid komme til VBA-vinduet (f.eks. med Ctrl+G) og skrive: AllowBypassKeys(true)
Avatar billede hekla Nybegynder
19. november 2002 - 20:08 #7
Weinreich > Skal vi ikke have det her spørgsmål lukket?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester