Установка работала в старых средах, когда UAC выключен (что плохо делать), вам всегда нужно запускать вашу программу установки/скрипт с повышенными привилегиями (так было с Windows Vista). Вы можете включить манифест, чтобы ваше приложение/служба требовали возвышения при выполнении с параметром/install.
Чтобы включить манифест, необходимо создать файл XML под названием manifest.xml с следующим содержанием:
<?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="YourApplication.exe" type="*" />
<description>elevate execution level</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" />
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" publicKeyToken="6595b64144ccf1df" language="*" processorArchitecture="*" />
</dependentAssembly>
</dependency>
</assembly>
Затем создайте файл с именем manifest.rc с следующим содержанием:
1 24 "Manifest.xml"
В современных версиях Delphi вы можете просто включить rc-файл в проект через менеджера проекта, и Delphi автоматически включит его в качестве ресурса. В старых версиях Delphi вам нужно вручную скомпилировать файл .rc с компилятором brcc для создания файла .res.
Как я могу включить манифест? – Toster
Delphi 10 Seattle (XE10) – Toster
@Toster - у вас есть немного о том, чтобы включить манифест в приложение Delphi? whosrdaddy дал вам точно, что делать. – RBA