2012-06-24 5 views
2

Что не так в этом манифесте для запуска приложения в качестве администратора? Он отлично работает с 32-битным, но используется с 64-битным exec, выдает ошибку при запуске и отключается: «Приложение не смогло начать правильно (0xc000007b). Нажмите« ОК », чтобы закрыть приложение».Дельфийский манифест для повышения UAC в 64-битном

EDIT: вопрос решен и закрыт, для дальнейшего использования:

Работа проявляется как для 32/64 бит, добавьте его через Параметры проекта/приложения/Время воспроизведения Themes/Custom Manifest-> выбрать .manifest файл. По какой-то причине компилятор ресурсов Delphi XE2, по-видимому, испортится.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
     <dependency> 
       <dependentAssembly> 
         <assemblyIdentity 
           type="win32" 
           name="Microsoft.Windows.Common-Controls" 
           version="6.0.0.0" 
           processorArchitecture="*" 
           publicKeyToken="6595b64144ccf1df" 
           language="*" 
         /> 
       </dependentAssembly> 
     </dependency> 
     <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> 
       <security> 
         <requestedPrivileges> 
           <requestedExecutionLevel 
             level="requireAdministrator" 
             uiAccess="false"/> 
         </requestedPrivileges> 
       </security> 
     </trustInfo> 
</assembly> 
+0

related (http://stackoverflow.com/questions/10492037/the-application-was-unable-to-start-correctly-0xc000007b) – Hendra

ответ

3

Ваша проблема не связана с вашим манифестом. Вы можете убедиться, что это так, создав пустое приложение и добавив ваш манифест в качестве пользовательского манифеста.

Код ошибки 0xc000007b - это то, что вы получаете, когда 64-битный процесс импортирует функции из 32-разрядной библиотеки DLL, и это наиболее правдоподобное объяснение ваших проблем. Используйте Dependency Walker, чтобы узнать, какие импортные решения решаются с помощью 32-разрядных библиотек DLL.

+0

Приложение работает нормально, хотя в 64-разрядном без манифеста. – hikari

+0

Что сказал вам Зависимость Уокер? –

+0

Получил это сейчас, как-то компилятор ресурсов (brcc32) что-то испортил. Если я добавлю манифест через параметры проекта/темы приложения/времени выполнения-> Пользовательский манифест и выберем файл манифеста вручную, он будет работать нормально. – hikari