21. februar 2002 - 15:47Der 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
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
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.
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.
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
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
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.
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.
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...
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...
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.
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
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.