Конференция "WinAPI" » Как получить права администратора в Win7?
 
  • Aleksus (09.12.11 12:37) [0]
    Нужно при запуске приложения получить права администратора для правильной работы приложения в Виндовс 7. Нашел тут статью для VisualStudio: http://forum.vingrad.ru/act-Print/client/printer/f-466/t-332538.html Можно ли это провернуть как-то в Delphi 2010?
  • Anatoly Podgoretsky © (09.12.11 14:25) [1]
    > Aleksus  (09.12.2011 12:37:00)  [0]

    Там нет ничего на Vx
  • P (09.12.11 17:55) [2]
  • Dmitriy (20.12.11 17:47) [3]
    создаем файл mainifest.rc c одной строчкой внутре:

    1 24 "Manifest.txt"



    создаем файл Manifest.txt - из твоей ссылки


    <?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"
        processorArchitecture="X86"
        name="IsUserAdmin"
        type="win32"/>
     <description>Description of your application</description>
     <!-- Identify the application security requirements. -->
     <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
       <security>
         <requestedPrivileges>
           <requestedExecutionLevel
             level="requireAdministrator"
             uiAccess="false"/>
           </requestedPrivileges>
          </security>
     </trustInfo>
    </assembly>



    Прикручиваем manifest.rc к проекту
    в project/options/application убираем флажок use runtime themes
    компилируем - ЩАСТЬЕ!!!
  • Dmitriy (20.12.11 17:57) [4]
    ну и да, чтобы темы таки не потерялись, manifest.txt должен выглядеть так:


    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>

    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
     <assemblyIdentity
    type="win32"
    name="MyApplication.Test"
    version="1.0.0.1"
    processorArchitecture="*"/>
     <dependency>
    <dependentAssembly>
      <assemblyIdentity
     type="win32"
     name="Microsoft.Windows.Common-Controls"
     version="6.0.0.0"
     publicKeyToken="6595b64144ccf1df"
     language="*"
     processorArchitecture="*"/>
    </dependentAssembly>
     </dependency>
     <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
     <requestedExecutionLevel
       level="requireAdministrator" uiAccess="false"/>
      </requestedPrivileges>
    </security>
     </trustInfo>
       <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
         <application>
           <!--The ID below indicates application support for Windows Vista -->
             <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
           <!--The ID below indicates application support for Windows 7 -->
             <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
         </application>
       </compatibility>
    </assembly>



    ну и маленькая добавка - говорим в манифесте, что наша программа знает о существовании 7-ки и висты (можно и убрать)
  • Cupryanoff (23.12.13 00:03) [5]
    а восьмерку она видит?)

    __________
    http://speclesa.ru/catalog/stroitelnye-lesa
  • brother © (23.12.13 05:11) [6]
    иди в опу!
  • Kirill © (04.07.14 13:59) [7]
    Подскажите, пожалуйста, сделал файлик. Добавил его к проекту.
    1 24 "XP.manifest"



    {$R *.RES}
    {$R 'WindowsXP.res' 'WindowsXP.RC'}

    begin
     Application.Initialize;
     Application.Title := 'Process Starter';
     Application.CreateForm(TMainForm, MainForm);
     Application.CreateForm(TEditApplicationForm, EditApplicationForm);
     Application.Run;
    end.



    Программа не спрашивает права. Начала анализировать, увидел что Delphi XE 6 добавляет мой манифест в группу .rsrc\1049, а в 1033 прилинковывает дефолтный манифест
    <?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"
           publicKeyToken="6595b64144ccf1df"
           language="*"
           processorArchitecture="*"/>
       </dependentAssembly>
     </dependency>
     <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
       <security>
         <requestedPrivileges>
           <requestedExecutionLevel
             level="asInvoker"
             uiAccess="false"/>
           </requestedPrivileges>
       </security>
     </trustInfo>
    </assembly>

  • Kirill © (04.07.14 14:45) [8]
    Разобрался.
    Собрал файл ресурсов с кодом языка
    brcc32 -l409 WindowsXP.RC


    Всем большое спасибо.
  • Vendict_ (24.10.14 09:40) [9]
    И ещё. Бился два дня с этим.
    К примеру вы делаете проект Project1.exe, к нему файл Project1.exe.manifest, его упаковываете в Project1.rc, и дерективой $R включаете в проект
    {$R Project1.res Project1.rc}
    И Дельфи делает Project.res с вашим манифестом, а потом поверх него Project.res с остальными ресурсами. В итоге ваш манифест затирается.
    Вывод. Поменяйте имя выходного res и rc файла.
  • kandiral © (21.11.16 05:13) [10]
    Программа для интеграции кастомного манифеста в проекты на Delphi

    http://kandiral.ru/delphi/integraciya_manifesta_v_programmu_na_delphi.html
  • PhilSoft (11.01.18 19:10) [11]
    И стоит оставить XPMan где то в Uses как все эти танцы с правами админа становятся бесполезными
  • han_malign © (12.01.18 12:54) [12]

    > brcc32 -l409 WindowsXP.RC


    - без локали.rc
    LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
    1 24 "XP.manifest"



    - 1033.rc
    LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
    1 24 "XP.manifest"



    - 1049.rc
    LANGUAGE LANG_RUSSIAN, SUBLANG_RUSSIAN_RUSSIA
    1 24 "XP.manifest"

  • Плохиш © (15.01.18 01:41) [13]
    некроманы зажигают
  • Eraser © (15.01.18 03:02) [14]

    > PhilSoft   (11.01.18 19:10) [11]

    какие танцы, какой XPMan?
    очнитесь и посмотрите в календарь!

    https://www.dropbox.com/s/at5ab13i3u4r20h/2018-01-15_3-00-26.png?dl=0
 
Конференция "WinAPI" » Как получить права администратора в Win7?
Есть новые Нет новых   [118644   +49][b:0][p:0.004]