How can I inhibit the security warning when starting Access with a Shell command?

  • Thread starter Thread starter Michael Scott
  • Start date Start date
M

Michael Scott

Hello

I've been using these newsgroups for some time and find them to be an
invaluable source of information and advice. But now I have a specific
problem that I cannot find an answer to; perhaps someone could point
me in the right direction?

Briefly, I'm involved in the development of a product (written in
Access 2003) that will analyse another Access database, and as part of
that analysis process I need to open the target database in another
instance of Access.

My problem is that I need to use workgroup security and I would also
like to inhibit the security warning that appears when Access starts.
I believe that is is not possible to specify a user and password when
using automation, and that the database must be opened using Shell. I
am thus using Shell to open the target database, with the /wrkgrp, /
user and /pwd options set appropriately. I have found no way of
inhibiting the security warning and am therefore using SendKeys to
send Shift+O after a brief delay. I am then grabbing the instance of
Access just opened by using GetObject.

This works but is quite messy, and I'd like to have Access startup
completely invisibly. I know that I can inhibit the security warning
using automation by means of the AutomationSecurity property of the
Access application, but that automation does not allow the use of
workgroups.

I've been struggling for days with this. Am I missing something
obvious? Does anyone have any suggestions?

Thanks
 
Hi, Michael.
I have found no way of
inhibiting the security warning and am therefore using SendKeys to
send Shift+O after a brief delay. I am then grabbing the instance of
Access just opened by using GetObject.

For future reference, that technique won't work in Windows Vista with UAC
turned on. It's not a good idea to use SendKeys anyway, especially on
processes that take more than a split second, and opening an application
that has the Macro Security level set higher than "Low" or that checks for
unsafe expressions is going to take way longer than a split second.
I know that I can inhibit the security warning
using automation by means of the AutomationSecurity property of the
Access application, but that automation does not allow the use of
workgroups.

Correct. Well, it doesn't allow the default Admin user to have a password
set, because all Jet databases use workgroups, even the unsecured ones.
I've been struggling for days with this. Am I missing something
obvious?

No. The rest of us have tried it, too. Doesn't work with both Access User
Level Security and Macro Security set higher than "Low" and/or checking for
unsafe expressions, unless you want the user to click those message boxes in
the warnings. The solution is to either set Macro Security level to "Low"
and not check for unsafe expressions or else digitally sign the database
file and have the recipient of the database file trust that digital
certificate.

HTH.
Gunny

See http://www.QBuilt.com for all your database needs.
See http://www.Access.QBuilt.com for Microsoft Access tips and tutorials.
Blogs: www.DataDevilDog.BlogSpot.com, www.DatabaseTips.BlogSpot.com
http://www.Access.QBuilt.com/html/expert_contributors2.html for contact
info.
 
Thanks for the suggestions and advice.
It's not a good idea to use SendKeys anyway, especially on
processes that take more than a split second, and opening an application
that has the Macro Security level set higher than "Low" or that checks for
unsafe expressions is going to take way longer than a split second.

I agree... and was using this method as a workaround until I'd
discovered a better way of doing things.
The rest of us have tried it, too. Doesn't work with both Access User
Level Security and Macro Security set higher than "Low" and/or checking for
unsafe expressions, unless you want the user to click those message boxes in
the warnings. The solution is to either set Macro Security level to "Low"
and not check for unsafe expressions or else digitally sign the database
file and have the recipient of the database file trust that digital
certificate.

The trouble is that this is a product we'll be using at customer sites
- or even selling to customers - and we have no control over the
security settings on their system. I need to write something that will
open Access invisibly regardless of workgroup and Macro Security
settings, but it looks like you're confirming my suspicion that that
is impossible...

Is there any way of using the PrivDbEngine to achieve this?

Maybe I'm going about this in completely the wrong way. My program
analyses and reports on all objects in a target database - tabledefs,
querydefs, containers, documents, etc. I can get most of the
information I need quite easily but in order to get inside the forms
and modules and examine the code I believe I have to open the database
in another instance of Access. Is there another way of getting hold of
the code?
 
Back
Top