• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 493
  • Last Modified:

VC++ 6.0 App must run as Admin to access a DB in the Common Application Data area

I have an old C++/MFC app written with VS 6. I am trying to make it compliant with Windows Vista and 7 by moving the DB directory to the Common Application Data area. But when I try to open the Access DB using DAO it reads the primary table, finds no records, and reports that no data is found. However, if I select "Run as Admin", then records are found and the app runs like normal and without any issue.

Should I be storing the database in another location? If not, why does it fail to read the table correctly?

Also, I have tried using the attached manifest, that I found online and modified slightly, but it does not seem to force the application to run as admin and so I still get the no data found message. I don't know much about manifests yet, so it could be that I didn't configure it correctly.

I would appreciate it if you could provide me with the correct location to store the DB, so multiple users on a single computer can access it and/or a method of getting this app to run as Admin.

Thanks for any help or advise you can give.


F-Apps.manifest
0
no_hop
Asked:
no_hop
  • 6
  • 3
2 Solutions
 
Deepu AbrahamR & D Engineering ManagerCommented:
http://msdn.microsoft.com/en-us/library/bb756929.aspx

Can you try with:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
0
 
Deepu AbrahamR & D Engineering ManagerCommented:
Another way is to set ACL on AppData folder during the installation/before starting the application.

Regarding cacls command:
http://technet.microsoft.com/en-us/library/bb490872.aspx
http://en.wikipedia.org/wiki/Cacls
0
 
no_hopAuthor Commented:
The initial comment to try: <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
did not make any difference.

I did notice that if I copy the application to some other folder that is not under the Program Files folder, say C:\MyApp; then it seems to recognize the manifest and ask the user about allowing this app to control the system.  If I select Yes, then everything seemed to work fine.  Why is that?  Also, how do I avoid that popup everytime I start the application?

With regard to the second comment to use CACLS, the instructions seem to imply that you must specify a user name and I need it to support any user and not just the one that installs it.
0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
Deepu AbrahamR & D Engineering ManagerCommented:
What about this?
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
0
 
Deepu AbrahamR & D Engineering ManagerCommented:
0
 
cupCommented:
You can specify the user everyone.  eg

cacls xxx.mdb /E /G everyone:C

It keeps the old permissions /E
It grants (/G) everyone change permission (C)
0
 
no_hopAuthor Commented:
I could not seem to find a suitable answer, so I just upgraded the application from VS 6 to VS 2008 and used a built-in manifest that seems to work.
0
 
Deepu AbrahamR & D Engineering ManagerCommented:
Thanks for letting me know about that. Much appreciated.
0
 
Deepu AbrahamR & D Engineering ManagerCommented:
BTW. did you make any modifications in your manifest?
0
 
no_hopAuthor Commented:
No matter what I did, the VC++ 6 compiled app would not run from the Program Files folder.  
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

  • 6
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now