Results 1 to 7 of 7
  1. #1
    3 Star Lounger
    Join Date
    Jan 2001
    Location
    Cornwall, England
    Posts
    393
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Stupidest Question today ?

    I have just taken delivery of the Office97 Developers Kit and cannot get an Access database to run as runtime only. I understand there is a switch '/runtime' that is requireed but where do i put this please?

  2. #2
    Silver Lounger
    Join Date
    Jan 2001
    Location
    Indianapolis, Indiana, USA
    Posts
    1,862
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Re: A very valid question

    You'll want to create a shortcut to the database and add "/RUNTIME" to the end of the database name. The target of the shortcut should read (for example):
    C:MyDocu~1MyData.mdb /Runtime

    HTH[img]/w3timages/icons/thinks.gif[/img]
    -MarkJ-

  3. #3
    3 Star Lounger
    Join Date
    Jan 2001
    Location
    Cornwall, England
    Posts
    393
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Re: A very valid question

    Nice one,
    thats the last time a user deletes tables from the corporate database through ODBC !!! HA HA HA HA HA
    [img]/w3timages/icons/grin.gif[/img]

  4. #4
    4 Star Lounger
    Join Date
    Jan 2001
    Location
    Altnau, Thurgau, Switzerland
    Posts
    447
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Re: A very valid question

    re your comment (concerning Access Runtime)

    "Nice one,
    thats the last time a user deletes tables from the corporate database through ODBC "


    You do realise Access runtime is nothing to do with security don't you. I have a program that deletes and recreates table links (booking app, with multiple 'client' databases of identical structure) where the front end is not only a runtime Access but an MDE, that is of note if someone had just removed a link rather than the table in your main data storage.


    Assuming you have not implemented security then:
    If the user has both Runtime and full versions of access installed all they need to do is remove the switch and you are back to where you started.

    If the user hasn't got access on that PC but a copy of Access somewhere else then (if they are malicious) they could easily construct construct another database (or with a programming language like Visual Basic, Visual C++ build an App) that could turn your corporate database into a corporate smoking hole in the ground.

  5. #5
    3 Star Lounger
    Join Date
    Jan 2001
    Location
    Cornwall, England
    Posts
    393
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Re: A very valid question

    Good point, security against malice is not my main concern rather security against a combination of curiosity and ignorance. The feeling is that with Access and the necessary ODBC links for the Corporate database adventurous users may try to get data by the back door with obvious consequences. If they are without a version of access that will let them try this then we will feel happier. If there is anyone in the company who can program VB or C++ to get at data then I wish they would let me know, i'm the only one in the company and am rushed off my feet so i could do with a hand!!
    How difficult is it to build and delete the links in your app? (do you mean ODBC links?) Obviously you feel it is worth the effort - was it necessary for only security reasons or are there other benefits?
    Regards
    Fatherjack

  6. #6
    3 Star Lounger
    Join Date
    Jan 2001
    Location
    The Netherlands
    Posts
    216
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Re: A very valid question

    Hi,

    To secure my databases I allways present them as a .MDE to my users. That prevents a lot of playing around in the code.
    Also I make sure that in the startup procedure of my application the following code is executed to restrict users to access the application in design mode:

    If Command = "Debug" Then
    fnChangeProperty "StartupShowDBWindow", dbBoolean, True
    fnChangeProperty "AllowBuiltinToolbars", dbBoolean, True
    fnChangeProperty "AllowToolbarChanges", dbBoolean, True
    fnChangeProperty "AllowShortcutMenus", dbBoolean, True
    fnChangeProperty "AllowFullMenus", dbBoolean, True
    fnChangeProperty "AllowBreakIntoCode", dbBoolean, True
    fnChangeProperty "AllowSpecialKeys", dbBoolean, True
    fnChangeProperty "AllowBypassKey", dbBoolean, True
    Else
    fnChangeProperty "StartupShowDBWindow", dbBoolean, False
    fnChangeProperty "AllowBuiltinToolbars", dbBoolean, False
    fnChangeProperty "AllowToolbarChanges", dbBoolean, False
    fnChangeProperty "AllowShortcutMenus", dbBoolean, False
    fnChangeProperty "AllowFullMenus", dbBoolean, False
    fnChangeProperty "AllowBreakIntoCode", dbBoolean, False
    fnChangeProperty "AllowSpecialKeys", dbBoolean, False
    fnChangeProperty "AllowBypassKey", dbBoolean, False
    End If

    ----------------
    fnChangeProperty looks like this:

    Function fnChangeProperty(strPropName As String, varPropType As Variant, varPropValue As Variant) As Integer
    '************************************************* *****************
    'SUB: fnChangeProperty
    '
    'Wijzigen van de startup properties.
    'Als de aangeroepen property nog niet bestaat, dan wordt deze aangemaakt.
    '
    'AANROEP: fnChangeProperty par1, par2, par3
    '
    'RETOUR: True (-1) indien aanroep ok
    ' False (0) indien fout
    '
    'LAATSTE WIJZIGING:
    ' Versie 1.0 februari 1999 B. Stam
    ' Initiele versie van de functie
    '************************************************* *****************
    If gTrace Then Debug.Print "baszsfrmSplash fnChangeProperty"
    Dim dbs As Database, prp As Property
    Const conPropNotFoundError = 3270

    Set dbs = CurrentDb
    On Error GoTo fnChangeProperty_Err
    dbs.Properties(strPropName) = varPropValue
    fnChangeProperty = True

    fnChangeProperty_Exit:
    Set dbs = Nothing
    Exit Function

    fnChangeProperty_Err:
    '************************************************* *****************
    'Als propertie niet gevonden, dan aanmaken.
    '************************************************* *****************
    If Err = conPropNotFoundError Then ' Property not found.
    Set prp = dbs.CreateProperty(strPropName, varPropType, varPropValue)
    dbs.Properties.Append prp
    Resume Next
    '************************************************* *****************
    'Als er een andere fout is, dan maar negeren.
    '************************************************* *****************
    Else
    fnChangeProperty = False
    Resume fnChangeProperty_Exit
    End If
    End Function

    -------------------------
    Most users will not be able to hack this and change the design of an application.
    If a user manage to change the design, you should consider to invide him or her to be a member of your team!

  7. #7
    4 Star Lounger
    Join Date
    Jan 2001
    Location
    Altnau, Thurgau, Switzerland
    Posts
    447
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Re: A very valid question

    I am a self-employed developer, mostly doing database work specific for the client.


    However one database App I have built is for intended for resale. It is a bookkeeping, order processing, document handling system. So one cannot guarantee the paths on the installation machine/network. (I would not even know the customer). To make it more complex I just don't have to do this path setting at installation. The end user could handle bookkeeping for a number of firms. Each of these back end data databases will be kept in its own directory, all accessed by one front end. So at startup the user selects which 'firm' they want to use (the previous one is stored in the registry for convenience) and after selection the table links are checked then broken and remade if necessary.

    The back end is an access database and that is easy to break/make the links. I don't have experience with other back-end database formats but I suspect the code would be almost identical, just with specific connection information changes.

    Security is a different matter.
    I explained about Access security - too complex for their requirements. So I 'built my own'. That means I use some of Access security to provide a general protection (financial info is VERY important to a firm) and then have simple user table(s) with name/password in the back-end with info as to which interfaces the current user is allowed to open and if so is it for read only access (saving is disabled). The login/database selection is in reality a C++ app hence the use of the registry. At first sight this security is weird BUT in reality one user may have full access to one firms info but no/partial access to another firm. So it does actually have a benefit as well as being a simple form to administer (check boxs for no, read only, full access) with only the administrator having rights to use this form. The use of a C++ startup program is to do with another requirement - only run one copy of the App. As the Access title bar displays the currently selected firms name I needed a method of determining if the whole system was up and running not dependant on the anything at all. The startup does that in the background and jumps the user into the interface if running instead of prompting for a further login.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •