Avatar billede hekla Nybegynder
21. februar 2002 - 15:47 Der er 20 kommentarer og
1 løsning

Forhindre brug af shift tast

Jeg skal have forhindret brugerne i at gå ind i min database med shift tasten, så de kan komme til at rode i koden. Jeg fandt følgende løsningsforslag fra horus fra et tidligere spørgsmål, men jeg kan ikke få det til at virke. Er der nogen som kan hjælpe???

________________________________________________________________

Der findes en "skjult" egenskab i access der hedder "AllowByPassKey", og som er sat til TRUE som standard, så man kan gå bag om databasen ved at holde shift nede, som du jo er klar over.

Man skal så bare sætte denne egenskab til FALSE, hvorefter det ikke længere er muligt at undgå at udføre autoexec makroen, eller åbne den formular du har defineret som startformular.

Herunder har du en funktion der ændre egenskaben for dig. det nemmeste er at køre funktionen fra debug vinduet. Se eksemplet i koden for at finde ud af hvad du skal skrive.

Hér er koden:

Function TilføjProgramEgenskab(strName As String, varType As Variant, varValue As Variant, Optional FilNavn As String) As Integer
   
   
    'Eksempel:
    'For at sætte/ændre egenskaben 'AllowBypassKey' skrives følgende:
    '
    'TilføjProgramEgenskab("AllowBypassKey", dbBoolean, False)
   
   
   
Dim dbs As Database, prp As Property
Const conPropNotFoundError = 3270

'Set dbs = CurrentDb

Set dbs = Currentdb()

On Error GoTo Fejl

dbs.Properties(strName) = varValue
    TilføjProgramEgenskab = True

Fortsæt:
    Exit Function

Fejl:
    If Err = conPropNotFoundError Then
        Set prp = dbs.CreateProperty(strName, varType, varValue)
        dbs.Properties.Append prp
        Resume
    Else
        TilføjProgramEgenskab = False
        Resume Fortsæt
    End If

End Function
21. februar 2002 - 15:53 #1
Hvis du bruger Access 2000 eller XP skal du huske en reference til Micriosoft DAO 3.6 Object Library.

Ellers ser koden såmend rigtig nok ud.
21. februar 2002 - 15:58 #2
Hvad er det, som går galt, når du kører den?
Avatar billede hekla Nybegynder
21. februar 2002 - 16:00 #3
Jeg bruger XP. DAO 3.6 referencen er aktiveret, men det kan være at jeg ikke helt forstår, hvordan man skal sætte koden op. Jeg har lavet det som en funktion i et modul og kører funktionen fra en makro.
Avatar billede hekla Nybegynder
21. februar 2002 - 16:02 #4
Jeg har prøvet med forskellige kombinationer, men ingen af dem virker.
21. februar 2002 - 16:13 #5
Du kan jo bare lægge funktionen i et modul og så, som du selv siger, kalde den fra debugvinduet således:

call TilføjProgramEgenskab("AllowBypassKey", dbBoolean, False)


Jeg plejer selv at kalde den hver gang systemet starter op (det har derfor selvfølgelig først effekt næste gang systemet startes). Samtidig har jeg lavet en 'backdoor', så jeg selv kan slå AllowBypassKeys til (f.eks. ved en bestemt tastekombination et betemt sted i databasen). Så kan jeg få adgang med shift næste gang jeg starter op.
Avatar billede hekla Nybegynder
21. februar 2002 - 16:38 #6
Når jeg gør det, kommer den med en debug, der hedder "Type mismatch" og peger på linien

        Set prp = dbs.CreateProperty(strName, varType, varValue)
Avatar billede hekla Nybegynder
21. februar 2002 - 16:47 #7
I locals vinduet står der ud for
connection: <handlingen undeerstøttes ikke for denne objekttype> Connection
Avatar billede hugopedersen Nybegynder
22. februar 2002 - 08:08 #8
Her får du mine funktioner til de ønskede tasks.
Jeg kalder fhpSetDistributeProperties før jeg sender noget til nogen.
Jeg har så en backdoor der gør at jeg kan kalde fhpRemoveDistributeProperties og komme ind i databasen igen.

GØR DIG SELV DEN TJENESTE AT TESTE PÅ EN KOPI !  Undskyld de store bogstaver, men det er vigtigt. Går noget galt er du på skideren.



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 hekla Nybegynder
22. februar 2002 - 09:59 #9
Tak for hjælpen. Jeg kunne få hugopedersen's udgave til at fungere så han får pointene.
Avatar billede 3xa Nybegynder
22. juli 2002 - 10:34 #10
-> HugoPedersen Må jeg spørge hvordan du bruger den Backdoor?
Avatar billede hugopedersen Nybegynder
22. juli 2002 - 10:39 #11
Det må du da !

Jeg har simpelthen et menupunkt som er passwordbeskyttet ( en simpel inputbox ) som kører fhpRemoveDistributeProperties.  Så har jeg mulighed for at holde shift nede når jeg åbner db'en.
Avatar billede 3xa Nybegynder
22. juli 2002 - 10:41 #12
Ahhh smart, den kan man vel også lægge på en shortcutkey, så den ikke er synlig?
Avatar billede 3xa Nybegynder
22. juli 2002 - 10:42 #13
Jeg har lagt fhpSetDistributeProperties() i en runcode i Autoexec - er det korrekt?
Avatar billede hugopedersen Nybegynder
22. juli 2002 - 10:46 #14
1. Det er absolut også en mulighed
2. Det er måske ikke så smart! Det vil måske give dig problemer - jeg er dog ikke sikker. Jeg kalder den kun 1 gang nå jeg har en db der er klar til distribution.
Avatar billede 3xa Nybegynder
22. juli 2002 - 10:51 #15
Ok, og så er den sat! Så forstår jeg det. Det vil sige at du kalder fhpSetDistributeProperties() når Shifttasten skal slåes fra og fhpRemoveDistributeProperties når den skal slåes til igen - SMART! Tak for hjælpen...
Avatar billede 3xa Nybegynder
22. juli 2002 - 10:56 #16
Lige en sidste ting, kan man komme ind i databasen hvis man disabler bruger dette her. Der er nemlig en ven der påstår at han nemt kan komme ind i den...
Avatar billede hugopedersen Nybegynder
22. juli 2002 - 10:59 #17
Altså nu er der jo så mange smarte mennesker på denne jord, så det skulle da ikke undre mig om det skulle kunne lade sig gøre. Men lav derfor altid en MDE fil af din db før du giver den til nogen.  Så kan de ikke lave alverden.
Avatar billede 3xa Nybegynder
22. juli 2002 - 11:04 #18
Tak!
Avatar billede hugopedersen Nybegynder
22. juli 2002 - 11:05 #19
YAW
Avatar billede hekla Nybegynder
22. juli 2002 - 16:02 #20
Ang. fhpRemoveDistributeProperties, så har jeg lagt den i en formular, hvor man skal skrive noget bestemt og derefter trykke på en bestemt cmd-button. Under denne cmd-button er der lagt en if-sætning ind, så den kun udfører fhpRemoveDistributeProperties, hvis man skriver det rigtige i feltet.
Derudover har jeg som ekstra sikkerhed (hvis et eller andet i databasen skulle gå i stykker)lagt fhpRemoveDistributeProperties ind i en makro med et helt umuligt navn.
Den kan man nemlig kalde udefra vha kommandoen:
"C:\Programmer\Microsoft office\OFFICE10\MSACCESS.EXE" "C:\Programmer\mindb.mdb" /x minmakro
Avatar billede hugopedersen Nybegynder
23. juli 2002 - 06:58 #21
Så burde alt være sikret :-)
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