[AccessD] Deployment Advice

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

   


More information about the AccessD mailing list