Stuart McLachlan
stuart at lexacorp.com.pg
Sat Sep 21 17:17:20 CDT 2013
On 22 Sep 2013 at 9:38, Steve Schapel wrote: > > - You need to set up the folder on the production machine as a "trusted > location", which you can't do via the Runtime. There are a couple of > utilities around that you can use to do this... the one I use is just a > little exe file that you put in the application folder and run it once... I > can track down where I got it from and let you know if you need. > > Regards > Steve > I do it with a mdb/accdc. A simple database with one module and an Autoexe macro which calls a function Startup(). It does require you to allow execution manually when you open it. (One of these days I will get around to making it a small .exe with PowerBasic) Here's the module (not usre where I found the function - on the internet somewhere): Option Compare Database Option Explicit Function Startup() AddTrustedLocation DoCmd.Quit End Function Public Function AddTrustedLocation() On Error GoTo err_proc 'WARNING: THIS CODE MODIFIES THE REGISTRY 'sets registry key for 'trusted location' Dim intLocns As Integer Dim i As Integer Dim intNotUsed As Integer Dim strLnKey As String Dim reg As Object Dim strPath As String Dim strTitle As String Dim strTrustedLocations As String strTitle = "Add Trusted Location" Set reg = CreateObject("wscript.shell") strPath = CurrentProject.Path strTrustedLocations = "HKEY_CURRENT_USER\Software\Microsoft\Office\" & Format(Application.Version, "##,##0.0") & _ "\Access\Security\Trusted Locations" 'Specify the registry trusted locations path for the version of Access used strLnKey = strTrustedLocations & "\Location" On Error GoTo err_proc0 'find top of range of trusted locations references in registry For i = 999 To 0 Step -1 reg.RegRead strLnKey & i & "\Path" GoTo chckRegPths 'Reg.RegRead successful, location exists > check for path in all locations 0 - i. checknext: Next MsgBox "Unexpected Error - No Registry Locations found", vbExclamation GoTo exit_proc chckRegPths: 'Check if Currentdb path already a trusted location 'reg.RegRead fails before intlocns = i then the registry location is unused and 'will be used for new trusted location if path not already in registy On Error GoTo err_proc1: 'Allow Network Locations reg.RegWrite strTrustedLocations & "\AllowNetworkLocations", 1, "REG_DWORD" For intLocns = 1 To i reg.RegRead strLnKey & intLocns & "\Path" 'If Path already in registry -> exit If InStr(1, reg.RegRead(strLnKey & intLocns & "\Path"), strPath) = 1 Then MsgBox CurrentProject.Path & " already in trusted locations": GoTo exit_proc NextLocn: Next If intLocns = 999 Then MsgBox "Location count exceeded - unable to write trusted location to registry", vbInformation, strTitle GoTo exit_proc End If 'if no unused location found then set new location for path If intNotUsed = 0 Then intNotUsed = i + 1 On Error GoTo err_proc: strLnKey = strLnKey & intNotUsed & "\" reg.RegWrite strLnKey & "AllowSubfolders", 1, "REG_DWORD" reg.RegWrite strLnKey & "Date", Now(), "REG_SZ" reg.RegWrite strLnKey & "Description", Application.CurrentProject.Name, "REG_SZ" reg.RegWrite strLnKey & "Path", strPath & "\", "REG_SZ" MsgBox CurrentProject.Path & " added to trusted locations" exit_proc: Set reg = Nothing Exit Function err_proc0: Resume checknext err_proc1: If intNotUsed = 0 Then intNotUsed = intLocns Resume NextLocn err_proc: MsgBox Err.Description, , strTitle Resume exit_proc End Function