2012-05-06 38 views
6

Napisałem aplikację bazy danych, która importuje dane z pliku Excela do bazy danych Access.Jak nadać elewację Delphi

nigdy nie miałem problemów, aby uruchomić aplikację, aby wstawić rekordy do bazy danych, ale jak tylko mogę uruchomić funkcję importowania danych z programu Excel do programu Access pojawia się następujące ostrzeżenie:

Żądana operacja wymaga elewację - kodem dyszy:

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

Co jest tego przyczyną i czy jest jakiś sposób, aby ominąć to

Odpowiedz

8

funkcja CreateOleObject Delphi wewnętrznie wywołuje metodę którym R CoCreateInstance winAPI równa się podniesienie. masz kilka opcji, aby sobie z tym poradzić.

1) Dodawanie manifestu do aplikacji, w tym 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) można uruchomić proces wtórny podwyższony które wykonać zadanie lub utworzyć obiekt COM, który działa na wzniesieniu, można znaleźć więcej informacji w tych MSDN wjazdowe

+0

processorArchitecture = "*" jest obsługiwany, aby wskazać wszystkie architektury procesorów. – eyeClaxton

Powiązane problemy