2012-05-06 15 views
6

Ho scritto un'app di database che importa dati da un file excel in un database di Access.Come assegnare l'elevazione a Delphi

non ho mai avuto problemi per eseguire l'applicazione, per inserire i record nel database, ma non appena ho eseguito la funzione per importare dati da Excel in Access ottengo il seguente avvertimento:

La richiesta operazione richiede elevazione - per codice dado:

LAccess := CreateOleObject('Access.Application'); 

Cosa causa questo e c'è un modo per aggirare l'

risposta

8

la funzione CreateOleObject delphi chiama internamente il metodo CoCreateInstance Winapi che r equi elevazione. hai un paio di opzioni per affrontare questo.

1) Aggiunta di un manifest all'app, incluso requested execution levelrequireAdministrator.

<?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) È possibile avviare un processo secondario elevata che sarebbe fare l'operazione o creare un oggetto COM che corre elevata, è possibile trovare ulteriori informazioni in questi MSDN POSTs

+0

processorArchitecture = "*" è supportato per indicare che tutte le architetture del processore. – eyeClaxton

Problemi correlati