Если вы действительно хотите установить флаг «Запуск от имени администратора» ярлыка (в отличие от принудительного запуска целевого приложения с правами администратора), вы можете использовать этот код:
[Icons]
Name: "{userdesktop}\My Program"; Filename: "{app}\MyProg.exe"; \
AfterInstall: SetElevationBit('{userdesktop}\My Program.lnk')
[Code]
procedure SetElevationBit(Filename: string);
var
Buffer: string;
Stream: TStream;
begin
Filename := ExpandConstant(Filename);
Log('Setting elevation bit for ' + Filename);
Stream := TFileStream.Create(FileName, fmOpenReadWrite);
try
Stream.Seek(21, soFromBeginning);
SetLength(Buffer, 1);
Stream.ReadBuffer(Buffer, 1);
Buffer[1] := Chr(Ord(Buffer[1]) or $20);
Stream.Seek(-1, soFromCurrent);
Stream.WriteBuffer(Buffer, 1);
finally
Stream.Free;
end;
end;
Это основано на:
Протестировано в Unicode-версии Inno Setup. Но, что еще более естественно, он должен работать и с версией Ansi, хотя вы в любом случае должны использовать версию Unicode.
Если вы хотите разрешить пользователю запускать программу в конце установки, используя запись postinstall
в разделе [Run]
, вам, конечно, нужно будет явно запросить повышение прав.
Если установщик запускается с правами администратора, вы можете просто добавить runascurrentuser
flag:
[Run]
Filename: "{app}\MyProg.exe"; Description: "Launch application"; \
Flags: postinstall nowait skipifsilent runascurrentuser
Если установщик запускается без прав администратора, установите параметр Verb
на runas
(для этого вам также понадобится флаг shellexec
):
[Run]
Filename: "{app}\MyProg.exe"; Verb: runas; Description: "Launch application"; \
Flags: postinstall nowait skipifsilent shellexec
Тем не менее, убедитесь, что у вас есть очень веская причина для запуска вашего приложения с правами администратора. Пользовательским приложениям не требуются права администратора. Если им это нужно, обычно это признак плохого дизайна. Одна из распространенных (плохих) причин, по которым приложение может запускаться с правами администратора, заключается в том, что приложению необходимо выполнить запись в свою папку установки.
См. Приложение не работает при установке с помощью Inno Setup
person
Martin Prikryl
schedule
06.01.2017
[Registry]
, который будет настроен для запуска от имени администратора в качестве действия по умолчанию для запуска этого приложения. напримерRoot: "HKLM"; Subkey: "SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\"; ValueType: String; ValueName: "{app}\tomcat7w.exe"; ValueData: "RUNASADMIN"; Flags: uninsdeletekeyifempty uninsdeletevalue; MinVersion: 0,6.1
- person RobeN   schedule 07.06.2013