Ярлык Inno Setup на рабочем столе (ссылка) с расширенным свойством "Запуск от имени администратора"
Я изо всех сил пытаюсь получить Inno setup (5.5.9u) для создания ярлыка на рабочем столе, который имеет значок и имеет расширенное свойство "Запуск от имени администратора".
вопрос
Этот вопрос немного отличается от: Как установить "Запуск от имени администратора" для файла с помощью Inno Setup
Поскольку я пытаюсь не запускать программу во время установки с правами администратора (программа установки уже запущена с правами администратора), а оставить на рабочем столе ссылку с дополнительным свойством "Запуск от имени администратора".
Пример кода
[Icons]
Name: "{group}\EGPL Watson Uninstall"; Filename: "{uninstallexe}"; WorkingDir: "{app}"
Name: "{commondesktop}\DashBoard"; \
Filename: "{app}\dashboard\node_modules\electron\dist\electron.exe main.js"; \
WorkingDir: "{app}\dashboard"; IconFilename: "{src}\dashboard\build\configure.ico"
1 ответ
Inno Setup не поддерживает это изначально.
Флаг "Запуск от имени администратора" является немного файлом.lnk. Увидеть:
- LinkFlags в [MS-SHLLINK]: двоичный формат файла Shell Link (.LNK);
- Как создать ярлык "Запуск от имени администратора" с помощью Powershell;
- Как я могу использовать JScript для создания ярлыка, который использует "Запуск от имени администратора"
Вы можете установить бит, используя следующий код:
[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.