2010-03-13 6 views
1

Я встраивание манифеста в .NET ехе, так что он может запросить повышенные разрешения в Vista, и Windows 7. манифеста, что я использую выглядит следующим образом:.NET Embedded манифеста Crashes XP

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
<assemblyIdentity version="1.0.0.0" name="ElevationTest" type="win32"/> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> 
    <security> 
     <requestedPrivileges> 
     <requestedExecutionLevel level="requireAdministrator"/> 
     </requestedPrivileges> 
    </security> 
    </trustInfo> 
</assembly> 

It работает как ожидается в Vista и Windows 7, но сбой XP, когда стандартная ошибка «... столкнулась с проблемой и должна закрыть ...». Если я не внедряю манифест, он работает так, как ожидалось, но, очевидно, не будет иметь необходимых разрешений в Vista и Windows 7.

Что такое стандартный способ создания exe, который будет работать с правильными разрешениями в XP и Vista/Windows 7?

Спасибо, Алан

+0

У меня такая же проблема - манифест совместимости не позволяет запускать мое приложение дважды на Windows XP SP2 –

ответ

1

Я думаю, что манифест может быть отвлекающим маневром. Я только что создал консольное приложение с этим манифестом, внедренным, нацеленным на .NET 2.0, и он успешно работает на XP SP3.

Вы пытались запустить приложение на XP без встроенного манифеста? Кроме того, какая версия .NET предназначена для вас, какой тип приложения .NET (WPF, WinForms, service и т. Д.) И, наконец, я должен спросить, является ли корректная версия .NET установленной на этой машине XP?

+0

Спасибо за ваш ответ Джон. Да, я попытался запустить приложение без встроенного манифеста, и он работает. Я нацелен на .NET 2.0 SP1 с приложением WinForms. На компьютере XP установлена ​​правильная версия .NET. Для информации, я запускаю XP SP2, а не SP3. Alan –

+0

Хммм. Что произойдет, если вы создадите новое приложение WinForms, примените манифест и попытаетесь запустить его на своей машине XP? Просто проверил, что на XP SP2 на этот раз и до сих пор нет аварии для меня. Если это произойдет, я рекомендую восстановить .NET (я видел, как .NET вел себя так странно, как раньше, и ремонт обычно сортирует его). В противном случае, вы пробовали работать в другой коробке XP? В противном случае добавили ли вы новый обработчик Application.ThreadException, чтобы поймать необработанные исключения и посмотреть, можете ли вы поймать сбой и захватить стек вызовов? –

+0

Привет, Джон. После гораздо большего опыта я нашел причину аварии. Я применял сильное имя к моему exe. Сочетание манифеста и сильного имени вызывало крах. Для меня сильное именование не было существенным, поэтому я отключил его. Еще раз спасибо за помощь. Alan –