I have written a database app that imports data from an excel file into a Access database.
I have never had trouble to run the app, to insert records into the database, but as soon as I run the function to import data from the Excel into the Access I get the following warning:
The requested operation requires elevation - by die code:
LAccess := CreateOleObject('Access.Application');
What is causing this and is there a way to get around it
The CreateOleObject
delphi function internally calls the CoCreateInstance WinApi method which requires elevation. you have a couple of options to deal with this.
1) Adding a manifest to your app including the requested execution level requireAdministrator.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
name="Your app name goes here"
processorArchitecture="x86"
version="5.1.0.0"
type="win32"/>
<description>your app description goes here</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="x86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="requireAdministrator"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
2) You can launch a secondary process elevated that would do the task or create a COM object that runs elevated, you can find more info in these MSDN entries
Redesign for UAC Compatibility
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With