Inno Setup桌面快捷方式(链接)具有“以管理员身份运行”高级属性集 [英] Inno Setup desktop shortcut (link) which has "Run as administrator" advanced property set

查看:655
本文介绍了Inno Setup桌面快捷方式(链接)具有“以管理员身份运行”高级属性集的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在努力获取Inno设置(5.5.9u),以创建一个桌面快捷方式,该快捷方式具有一个图标,并且设置了以管理员身份运行 的高级属性。

I am struggling to get Inno setup (5.5.9u) to created a desktop shortcut that has an icon and has the advanced property of "Run as administrator" set.

问题

此问题与以下内容略有不同:如何在文件上设置以管理员身份运行使用Inno Setup

This question, is a little different than: How to set 'Run as administrator' on a file using Inno Setup

由于我要执行的操作不是在安装时以管理员权限运行程序,(安装已在Admin上运行),而是在具有以管理员身份运行 高级属性的桌面上保留链接。

Since what I am trying to do is not run a program at setup time with admin rights, (setup is already running at Admin), but rather leave a link on the desktop that has has the advanced property of "Run as Administrator".

代码示例

[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"


推荐答案

首先,请确保您有充分的理由以管理员权限运行应用程序。用户应用程序不需要管理员权限。如果他们需要它,通常表示设计不好。希望应用程序以管理员权限运行的一个常见(坏)原因是该应用程序需要写入其安装文件夹。

请参见使用Inno安装程序安装后,应用程序无法正常工作

Inno Setup本身不支持使用设置了以管理员身份运行 标志的快捷方式。

Inno Setup does not natively support creating a shortcut with "Run as Administrator" flag set.

>以管理员身份运行 标志只是.lnk文件。请参阅:

The "Run as Administrator" flag is a bit the .lnk file. See:

  • LinkFlags in [MS-SHLLINK]: Shell Link (.LNK) Binary File Format;
  • How to create a Run As Administrator shortcut using Powershell;
  • How can I use JScript to create a shortcut that uses "Run as Administrator"

您可以使用以下代码设置该位:

You can set the bit using the following code:

[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上进行了测试(Inno Setup 6中唯一的版本)。但是,更自然地,它也应该可以在Ansi版本上使用。

这篇关于Inno Setup桌面快捷方式(链接)具有“以管理员身份运行”高级属性集的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆