Vista UAC manifest

Тема в разделе "WASM.WIN32", создана пользователем ATX, 25 апр 2009.

  1. ATX

    ATX New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2006
    Сообщения:
    145
    Всем привет!

    Проблема такая, при запуске под вистой моя аппа прибивается системой безописности.
    Говорят что проблема лечится при помощи манифеста, подскажите плиз где взять этот самый минифест и как его граматно прикрутить (пишу на MASM-е).

    Сенькс
     
  2. deLight

    deLight New Member

    Публикаций:
    0
    Регистрация:
    26 май 2008
    Сообщения:
    879
    Код (Text):
    1. <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
    2. <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
    3.   <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    4.     <security>
    5.       <requestedPrivileges>
    6.         <requestedExecutionLevel level='requireAdministrator' uiAccess='true' />
    7.       </requestedPrivileges>
    8.     </security>
    9.   </trustInfo>
    10. </assembly>
    тебя будут интересовать значения в теге <requestedPrivileges>
    level может быть: requireAdministrator, highestAvailable, asInvoker

    описание думаю без проблем найдешь в сети.
    сам манифест должен быть или в ресурсах бинарника или с ним в одном каталоге <appname>.manifest, если не ошибаюсь
     
  3. SlyBit

    SlyBit New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2008
    Сообщения:
    43
    ATX

    В >=VS 2008 требуемый уровень привилегий UAC можно задать в настройках (Linker -> Manifest File -> UAC Execution Level).
     
  4. ntcdm

    ntcdm New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2007
    Сообщения:
    247
    Виста может не прибивать приложение а не давать его запустить если например для выполнения оно требует повышений а ты его запускаешь по WinExec(). По ShellExecute() если запускать то нормально должно работать
     
  5. ATX

    ATX New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2006
    Сообщения:
    145
    Спасибо за помощь, никак немогу прикрутить манифест(

    Проект сделан на MASM-е, проблема в том что один манифест у меня уже прописан в файле ресурсов (стиль ХР).
    1 24 manifest.xml ; <- Change to XP style
    2 24 UACmanifest.xml ; <- UAC manifest

    почему-то никакого эфекта от манифеста нет, подскажите плиз что не так...?
     
  6. ntcdm

    ntcdm New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2007
    Сообщения:
    247
    Надо сделать 1 сборный манифест.
     
  7. ATX

    ATX New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2006
    Сообщения:
    145
    Хорошая мысль, только я в xml не волоку, может кто посабит склеить?

    XP Style
    Код (Text):
    1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    2. <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    3. <assemblyIdentity
    4.     version="1.0.0.0"
    5.     processorArchitecture="x86"
    6.     name="QvasiModo.Programming.FileTypes"
    7.     type="win32"
    8. />
    9. <description>XP Style</description>
    10. <dependency>
    11.   <dependentAssembly>
    12.     <assemblyIdentity
    13.          type="win32"
    14.          name="Microsoft.Windows.Common-Controls"
    15.          version="6.0.0.0"
    16.          processorArchitecture="x86"
    17.          publicKeyToken="6595b64144ccf1df"
    18.          language="*"
    19.     />
    20.   </dependentAssembly>
    21. </dependency>
    22. </assembly>
    Vista
    Код (Text):
    1. <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
    2. <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
    3.   <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    4.     <security>
    5.       <requestedPrivileges>
    6.         <requestedExecutionLevel level='requireAdministrator' uiAccess='true' />
    7.       </requestedPrivileges>
    8.     </security>
    9.   </trustInfo>
    10. </assembly>
     
  8. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    Код (Text):
    1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    2. <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    3. <assemblyIdentity
    4.     version="1.0.0.0"
    5.     processorArchitecture="x86"
    6.     name="QvasiModo.Programming.FileTypes"
    7.     type="win32"
    8. />
    9. <description>XP Style</description>
    10. <dependency>
    11.   <dependentAssembly>
    12.     <assemblyIdentity
    13.          type="win32"
    14.          name="Microsoft.Windows.Common-Controls"
    15.          version="6.0.0.0"
    16.          processorArchitecture="x86"
    17.          publicKeyToken="6595b64144ccf1df"
    18.          language="*"
    19.     />
    20.   </dependentAssembly>
    21. </dependency>
    22.   <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    23.     <security>
    24.       <requestedPrivileges>
    25.         <requestedExecutionLevel level='requireAdministrator' uiAccess='true' />
    26.       </requestedPrivileges>
    27.     </security>
    28.   </trustInfo>
    29. </assembly>
    ?
     
  9. ATX

    ATX New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2006
    Сообщения:
    145
    Спасибо ohne

    Манифест вкомпилился, но бинарь в висте перестал запускаться, ругается - "Сервер возвратил ссылку" и тишина.
    В чем трабла?
     
  10. ntcdm

    ntcdm New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2007
    Сообщения:
    247
    Вот что я нашел:
    Hello,

    This error is comming up because you are attempting to execute an
    application with uiaccess=true that has not been signed. Vista places the
    following restriction on apps requesting uiAccess:

    - They must have a trusted, valid digital signature
    - If enabled by group policy (default), they must reside in a trusted
    filesystem location (programfiles, windows)

    uiAccess is intended only for accessibility applications, and may only
    receive a windows logo thru a waiver.

    If this is a product that is intended for external distribution, you should
    look for a way to do what you need to do without needing uiAccess.

    If this is an internal product that you use for testing, you can created a
    new test-signing root certificate, add that root certificate to the "trusted
    certificate" list, and then sign your app using that certificate.

    NOTE: These instructions assume you have visual studio installed and are
    using a command prompt that has all the environment variables set to find
    SDK utilities such as makecert and signtool. If not, you will need to find
    these tools on your hard drive before running them.


    http://www.vistaheads.com/forums/microsoft-public-windows-vista-general/3455-error-referral-returned-server.html
     
  11. ATX

    ATX New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2006
    Сообщения:
    145
    Всем спасибо!

    Ниже приложенный код манифеста работает (в нем стиль для XP + UAC), конечно бинарник автоматом не запускается, но покрайней мере виста его хоть не прибивает, а вежливо спрашивает у юзера: запускать его или нет ;)

    Код (Text):
    1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    2. <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    3. <assemblyIdentity
    4.     version="1.0.0.0"
    5.     processorArchitecture="x86"
    6.     name="QvasiModo.Programming.FileTypes"
    7.     type="win32"
    8. />
    9. <description>XP Style</description>
    10. <dependency>
    11.   <dependentAssembly>
    12.     <assemblyIdentity
    13.          type="win32"
    14.          name="Microsoft.Windows.Common-Controls"
    15.          version="6.0.0.0"
    16.          processorArchitecture="x86"
    17.          publicKeyToken="6595b64144ccf1df"
    18.          language="*"
    19.     />
    20.   </dependentAssembly>
    21. </dependency>
    22.   <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    23.     <security>
    24.       <requestedPrivileges>
    25.         <requestedExecutionLevel level='requireAdministrator' uiAccess='false' />
    26.       </requestedPrivileges>
    27.     </security>
    28.   </trustInfo>
    29. </assembly>
    p.s. Для запуска бинарника требующего админовских прав, всеже нужна цифровая подпись.
     
  12. ntcdm

    ntcdm New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2007
    Сообщения:
    247
    С этим манифестом винда и будет запускать бинарник с правами админа. А вот параметр uiAccess, который требует цифровой подписи, отвечает за то, будет ли разрешено приложению лезть в чужие окна.
     
  13. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    почитал тут... писец куда мелкософт катится.. пора переходить на линух.