Aggiungere una directory alle trusted Location di Access 2007 o 2010

Per aggiungere una determinata directory alle trusted Location di
Access bisogna andare ad impostare una chiave di registro, per farlo
si può usare una routine di questo tipo che può essere messa nel form load della maschera di avvio:

 'Per Access 2007
Const g_strKey = “HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Access\Security\Trusted Locations\LocationX\Path”
‘Per Access 2010
Const g_strKey = “HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Access\Security\Trusted Locations\LocationX\Path”

‘LocationX’ di g_strKey deve essere una stringa univoca, solitamente
i percorsi che si aggiungono a mano in Access 2007 o 2010 vengono nominati
Location1, Location2 ….

Private Sub Form_Load()
Dim shl
Dim strPath As String

Set shl = CreateObject("WScript.Shell")
If CurrentProject.Path <> shl.ExpandEnvironmentStrings("%USERPROFILE%Desktop") Then
      On Error Resume Next
      strPath = shl.RegRead(g_strKey)

       If strPath <> CurrentProject.Path Then
                        shl.RegWrite g_strKey, CurrentProject.Path
        End If
 End If
 Set shl = nothing
end sub

L’esempio qui sopra controlla che il percorso che si va ad aggiungere ai percorsi attendibili non sia quello del Desktop perchè questo non
sarebbe una operazione molto furba dal punto di vista della sicurezza.
La prima volta che apri il db ti chiede di attivare le macro, una volta che lo autorizzi, aggiunge la chiave di registro e le volte
successive il db sarà automaticamente Trusted.

Annunci

Informazioni su cinziapagani

Sono una libera professionista nel settore informatico, mi occupo prevalentemente di sviluppo Web e Database
Questa voce è stata pubblicata in Access 2007. Contrassegna il permalink.

15 risposte a Aggiungere una directory alle trusted Location di Access 2007 o 2010

  1. Ciao Cinzia, ci siamo già sentiti in riferimento agli avvisi di protezione di Access 2003. Mi hai suggerito di usare il codice vba sottostante, ma non risolve alla radice il problema, nel senso che in un computer vergine, come quello dei preti miei clienti, alla prima apertura appaiono comunque. Ho inserito le chiavi di registro anche in fase di installazione (Developer Extensions), ma il risultato non cambia. Domanda: con Access 2010, le cose cambiano? Mi dice Massimiliano Amendola che basta mettere, nel setup di Access dev kit, le chiavi di registro e si fila via lisci. Tu ne sai qualcosa? Vba:

    Dim wsh As WshShell
    Set wsh = New WshShell
    ‘ PER EVITARE MSG SULLE ESPRESSIONI POTENZIALMENTE PERICOLOSE CON
    MODALITA’ RUNTIME
    wsh.RegWrite “HKEY_LOCAL_MACHINE\Software\Microsoft\Office\11.0\Access
    \Security\Level”, 1, “REG_DWORD” ‘ ( default 2 )
    wsh.RegWrite “HKEY_LOCAL_MACHINE\Software\Microsoft\Jet\4.0\Engines
    \SandboxMode”, 2, “REG_DWORD” ‘ ( default 2, ma è meglio rimetterlo )
    Set wsh = Nothing ‘

    Se nel frattempo sei venuta a conoscenza di un metodo radicale per Access 2003, fammelo sapere, perchè con Access 2007-2010 non mi trovo. Grazie!

  2. Giancarlo ha detto:

    Ciao. Non riuscivo a far funzionare il codice che hai esposto sopra, quindi ho modificato il tuo
    “HKEY_CURRENT_USER\Software\MicrosoftOffice\12.0\AccessSecurity\Trusted Locations\LocationX\Path”
    con
    “HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Access\Security\Trusted Locations\LocationX\Path”
    e adesso funzia…se può essere utile…
    Grazie. Giancarlo

  3. luca ha detto:

    ho notato che funziona solo in locale e non in rete .
    Volevo sapere se sbaglio qualcosa

  4. Lillo ha detto:

    Ciao, mi chiamo Lillo e sono un principiante di Access.
    Ho creato un db con Access 2003 e l’ho installato su una macchina con Access 2010. Funzionava tutto bene fino a quando ho voluto togliere il messaggio all’apertura ( quello Opzioni; abilita contenuto) aprendo il centro sicurezza ed impostandolo ad un valore basso ( con il 2003 bastava: Strumenti;Macro;Sicurezza; Livello basso). Ora non mi funziona più niente, cioè i pulsanti delle form non funzionano e quando vado nelle proprietà degli stessi per andare ad inserire manualmente il docmd.openform ….., non mi da la possibilità di aprire il VB [RoutinEvento].
    Come faccio per riportare il tutto all’inizio???

    • cinziapagani ha detto:

      Ciao Lillo,
      hai aggiunto la cartella in cui si trova il db ai percorsi attendibili? Opzioni / Centro di sicurezza / Percorsi Attendibili

      • Lillo ha detto:

        Grazie Cinzia per avermi risposto.
        Veramente non ho aggiunto alcuna cartella in quanto con Access 2003 bastava impostare la protezione macro a livello basso e tutto procedeva bene.
        Oggi stesso provo ad inserire il percorso e poi ti faccio sapere.
        Di nuovo grazie e buon 2013, Ciao Lillo

      • Lillo ha detto:

        Ciao, ho fatto come tuo consiglio e funziona tutto. Grazie
        Volevo chiederti un altro consiglio.
        Ho una tb “Dipendenti” con due campi format data che sono “Data Inizio” e “Data Fine”
        Avrei bisogno di filtrare tutti i dipendenti attivi ad una data x ed i giorni da retribuire in riferimento al periodo filtrato. es:
        Vattelapesca inizio 01/12/12 fine 30/12/12
        Rossi Mario inizio 01/12/12 fine 30/03/13
        Bianchi Carlo inizio 01/12/12 fine 30/06/13
        pinco Pallino inizio 01/12/12 fine 10/01/13

        Se io tramite una maschera filtro dal 01/01/13 al 30/01/13 mi dovrebbe filtrare:
        Rossi Mario 30 gg
        Bianchi Carlo 30 gg
        pinco Pallino 10 gg
        Come posso fare?

      • cinziapagani ha detto:

        Ciao Lillo prova a guardare l’Istruzione DateDiff, dovrebbe risolverti il problema.

      • Lillo ha detto:

        Ciao Cinzia, ho provato con datediff, ma niente.

      • cinziapagani ha detto:

        Niente nel senso che non ritorna quello che vuoi o ti da un errore ed eventualmente che errore ti da? Come usi la DateDiff?

      • Lillo ha detto:

        Ciao Cinzia,
        niente perchè DateDiff funziona benissimo per calcolare le date provenienti da un solo campo, ma a me interessa visualizzare i dati relativi a due campi data diversi come nell’esempio mio riportato sopra, cioè mi dovrebbe restituire i valori compresi fra due campi data che sono diversi.
        Ciao Lillo

  5. Sergio Cis ha detto:

    Scusa Cinzia, ma non riesco a venirne a capo.
    Ho inserito nella maschera di Avvio la Form_Load da te indicata, ma Access 2010 continua a darmi un errore alla dichiarazione Const g_strKey = …….
    Il mio dubbio è di sbagliare ad impostare la LocationX e/o la Path.
    Potresti scrivere, per favore, la stringa da utilizzare se il Front-End fosse locato, ad esempio, nella cartella ‘Pippo’ in C:\
    Inoltre presumo che la variabile Const g_strKey vada dichiarata come prima istruzione della Sub Form_Load.
    Grazie ed un cordiali saluto
    Sergio

  6. cinziapagani ha detto:

    Probabilmente, l’errore è solo dovuto al fatto che l’istruzione deve stare tutta su una sola riga:
    Const g_strKey = “HKEY_CURRENT_USER\Software\Microsoft\Office\14\Access\Security\Trusted Locations\LocationX\Path”
    Al posto di LocationX devi mettere Location1, Location2 o Location3 …ecc.. l’importante è che nella stessa posizione del registro d sistema non ci sia già la stessa Location, e Path deve rimanere Path non lo devi cambiare, il percorso viene preso automaticamente dalla routine e messo uguale al percorso in cui si trova il db.

  7. vittorio ha detto:

    Ciao Cinzia, grazie alle tue instruzioni ho risolto un problema che avevo nel distribuire l’applicazione di Access.
    Vittorio

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...