Aplikacija se odpre, njena koda pa se ne izvaja
Simptom
Nameščena aplikacija se v uporabnikovem računalniku odpre, vendar se nič od njene kode ne zgodi: zagonski obrazec se prikaže brez podatkov ali ostane prazen, gumbi ne naredijo ničesar, model aplikacije se ne uporabi, kontrolniki WKL ostanejo prazni. Pogosto se ne prikaže nobeno sporočilo; v drugih primerih Access, preden odpre podatkovno zbirko, prikaže varnostno obvestilo programa Microsoft Access.
Okolje
Access za Microsoft 365, polna različica in izvajalno okolje, 32- in 64-bitni; ACCDE in ACCDB.
Vzrok
Access izvaja kodo podatkovne zbirke samo, če ji zaupa. O tem odločata nastavitev makrov v centru zaupanja (Datoteka › Možnosti › Središče zaupanja › Nastavitve središča zaupanja › Nastavitve makrov) in zaupanja vredna mesta; kaj uporabnik vidi, je odvisno od obojega in od vrste datoteke. Za ACCDE in ACCDB, zunaj zaupanja vrednega mesta in na njem:
| Nastavitev makrov | Datoteka ni na zaupanja vrednem mestu | Datoteka je na zaupanja vrednem mestu |
|---|---|---|
| Omogoči vse makre | Koda se izvaja | Koda se izvaja |
| Onemogoči vse makre z obvestilom (privzeto), ACCDE, polna različica in izvajalno okolje | Varnostno obvestilo; po Odpri se koda izvaja | Koda se izvaja, brez obvestila |
| Onemogoči vse makre z obvestilom, ACCDB, polna različica | Brez obvestila, samo vrstica za sporočila; koda je onemogočena, dokler ne kliknete Omogoči vsebino | Koda se izvaja |
| Onemogoči vse makre z obvestilom, ACCDB, izvajalno okolje | Varnostno obvestilo; po Odpri se koda izvaja | Koda se izvaja |
| Onemogoči vse makre razen digitalno podpisanih makrov | Brez obvestila, koda je onemogočena; ACCDE se sploh ne odpre | Koda se izvaja |
| Onemogoči vse makre brez obvestila | Brez obvestila, koda je onemogočena; ACCDE se sploh ne odpre | Koda se izvaja |
| Omogoči vse makre ali privzeta nastavitev, datoteka je označena kot prenesena iz interneta | Obvestilo, da je Microsoft blokiral izvajanje makrov, koda je onemogočena – tudi pri Omogoči vse makre | Koda se izvaja |
„Se sploh ne odpre“ pomeni: Access prikaže svoje prazno okno – naslov Access, trak, brez podokna za
krmarjenje, brez zavihkov dokumentov, brez zagonskega obrazca. Zagonske lastnosti datoteke
(StartUpShowDBWindow, AllowBypassKey in druge) takrat ne igrajo nobene vloge: izdana kopija za
produkcijo in kopija za upravljanje sta videti enako, pridržana tipka Shift ob odpiranju pa ničesar ne
spremeni. Ko je koda zaupanja vredna, zagonske lastnosti učinkujejo: kopija za upravljanje prikaže podokno za
krmarjenje, kopija za produkcijo pa ohrani zagonski obrazec in podokno skrije tudi pri pridržani tipki Shift
(AllowBypassKey = False).
Zaupanja vredno mesto velja samo za datoteke neposredno v njegovi mapi, razen če je vklopljena možnost, da so
zaupanja vredne tudi podmape tega mesta: mesto ...\Frontends\ brez te možnosti ne zaupa sprednjemu delu v
...\Frontends\1.0\. Zaupanja vredno mesto učinkuje pri vsaki nastavitvi makrov in odpravi tudi blokado
datoteke, prenesene iz interneta.
Nastavitev ActiveX v centru zaupanja (nastavitve kontrolnikov ActiveX) učinkuje neodvisno od tega: pri možnosti Onemogoči vse kontrolnike brez obvestila ostanejo kontrolniki WKL prazni tudi na zaupanja vrednem mestu – koda se izvaja, ustvarjanje kontrolnika WKL pa odpove z napako Accessa 2926 (varnostne nastavitve so kontrolnik onemogočile). Druge možnosti ActiveX nalaganja kontrolnikov WKL na zaupanja vrednem mestu ne preprečijo.
Skript, ki na taki datoteki zažene Access, čaka zaman: Access z onemogočeno kodo se na zahtevo za zaprtje,
poslano njegovemu glavnemu oknu, odzove tako, da zapre okno, proces pa ostane. To velja za Access, zagnan
skrito ali pomanjšano. Preden skript zažene aplikacijo, preverite zaupanje s Test-AccessTrust.ps1.
Rešitev
- Vzrok poiščite, ne da bi zagnali Access: kot uporabnik zaženite
tools\deploy\Test-AccessTrust.ps1 -Path <file>iz paketa izdaje. Njegova izhodna koda in izpis navedeta en vzrok (glejte `WklTrustCode` (referenčni priročnik API v angleščini)); v VBA da isti odgovor `WklApplication.CheckTrust` (referenčni priročnik API v angleščini). - Pri kodi 10 (datoteke ne pokriva nobeno zaupanja vredno mesto): sprednji del postavite na zaupanja vredno mesto s
tools\deploy\Set-AccessTrustedLocation.ps1 -Path <folder>– z-AllowSubfolders, če je sprednji del v podmapi te mape, na primer v eni mapi za vsako različico. - Pri kodi 30 (dovoljeni so samo podpisani makri): datoteko postavite na zaupanja vredno mesto (2. korak); preverba podpisanega projekta VBA ne prebere.
- Pri kodi 41 (uporabnikova nastavitev ActiveX): v Accessu v Datoteka › Možnosti › Središče zaupanja › Nastavitve središča zaupanja odprite nastavitve kontrolnikov ActiveX in izberite katero koli možnost razen Onemogoči vse kontrolnike brez obvestila.
- Pri kodi 50 (datoteka iz interneta): datoteko postavite na zaupanja vredno mesto (2. korak) ali odstranite oznako z Lastnosti › Odblokiraj v Raziskovalcu ali z
Unblock-Filev PowerShellu. - Pri kodi pravilnika skupine (11, 12, 13, 20, 40): pravilnik spremeni oddelek IT ali pa mesto nastavi s pravilnikom; uporabnik ga ne more preglasiti.
- Uporabnikom ne svetujte, naj kot način dela klikajo Omogoči vsebino: to velja samo za tisto eno odpiranje, ob naslednjem zagonu ali pri drugem uporabniku pa se pojavi ista blokada.