Inno Setup 桌面快捷方式(链接),其中设置了“以管理员身份运行”高级属性

2023-12-03

我正在努力让 Inno setup (5.5.9u) 创建一个带有图标并具有高级属性的桌面快捷方式“以管理员身份运行” set.

Issue

这个问题与以下问题有点不同:如何使用 Inno Setup 在文件上设置“以管理员身份运行”

因为我想做的不是在安装时以管理员权限运行程序(安装程序已经在管理员中运行),而是在桌面上留下一个链接,其中包含advanced的财产“以管理员身份运行”.

代码示例

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

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

See 使用 Inno Setup 安装时应用程序无法运行


Inno Setup 本身不支持创建快捷方式“以管理员身份运行”标志设置。

The “以管理员身份运行”flag 有点像.lnk 文件。看:

  • 链接标志在 [MS-SHLLINK] 中:Shell 链接 (.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;

在 Inno Setup 的 Unicode 版本(Inno Setup 6 的唯一版本)上进行了测试。但更自然地,它也应该适用于 Ansi 版本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Inno Setup 桌面快捷方式(链接),其中设置了“以管理员身份运行”高级属性 的相关文章

随机推荐

  • 这是在 JavaScript 中检查有效日期的好方法吗?

    请纠正或解释我的过度简化是错误的 因为我不是 JavaScript 专家 但我只需要知道一个对象是否是有效日期 这仅来自用户输入 即文本框 var is valid date function date try var d new Date
  • 如何从 python 更改 Linux 用户密码

    我在从 python 更改 Linux 用户密码时遇到问题 我已经尝试了很多方法 但无法解决问题 这是我已经尝试过的示例 sudo password是sudo的密码 sudo command是我希望系统运行的命令 user 是从列表中获取的
  • 什么是跳表?

    有人可以解释一下跳转表的机制以及为什么嵌入式系统需要它吗 跳转表可以是函数指针数组 也可以是机器代码跳转指令数组 如果您有一组相对静态的函数 例如系统调用或类的虚拟函数 那么您可以创建此表一次并使用数组的简单索引来调用函数 这意味着检索指针
  • R 中的分桶数据

    我正在尝试创建一个函数 根据给定的向量确定某个值进入哪个存储桶 所以我的函数有两个输入 一个确定存储桶断点的向量 例如 如果向量是 1 4 5 10 则桶将 我现在的做法是首先检查输入数字是否大于向量的最大元素或小于向量的最小元素 如果没有
  • 如何在拖动开始之前缓存整个图层并在拖动结束时将其恢复回来?

    我目前正在尝试稍微加快我的移动设备网络应用程序的速度 但现在我陷入了最重要的部分 缓存 如何在用户开始拖动之前缓存整个图层 并在拖动操作停止时将其恢复为可用的 Kinetic Nodes 现在我开始缓存 stage on mousedown
  • 图像分割结果中的噪声

    我正在做一个基于深度卷积神经网络的图像分割任务 网络结构来自这张纸 其结构如图所示 FCN在图像分割中的应用 该网络的设计基于全卷积网络 and DCAN 该数据集为腺体分割挑战赛公开基准数据集2015年米卡展会 也称为 Warwick Q
  • 为什么结构体中的双精度成员未在 8 字节边界上对齐?

    这是关于内存对齐的 在下面的代码中 我预计结构内 b 的偏移量为 8 32 位机器 看here 从而 使b总是发生在缓存行内 然而 事实并非如此 会员b在全局对象中struct test1似乎是对齐的 我不确定这是偶然的还是编译器故意这样做
  • 从 byte[] 返回文件下载

    这段代码 string xml XmlHelper ToXml queryTemplate byte xmlb StringHelper GetBytes xml var cd new System Net Mime ContentDisp
  • 如何在不使用 JSF 中隐藏标签的情况下将 javascript 内的值传递给托管 bean 属性?

    我们想知道是否可以在 Facelets 中的 javascript 方法内获取托管 bean 属性值 或者将 javascript 值传递给托管 bean 属性但不使用隐藏标记 当我们搜索它们时 我们看到的都是关于使用html隐藏标签或隐藏
  • 实体框架多对多查询:未生成导航属性

    我有两张桌子User and UserRole它们是使用链接表连接的UserInRole 当我生成实体模型时 由于某种原因 实体UserInRole没有生成 从图中可以看出 实体框架理解之间存在多对多关系User and UserRole
  • 如何细分/细化 xarray 数据集中的维度?

    Summary 我有一个数据集 其收集方式使得维度最初不可用 我想获取本质上是一大块无差别的数据 并为其添加维度 以便可以对其进行查询 子集化等 这是以下问题的核心 这是我拥有的 xarray 数据集
  • 如何将 Activator.CreateInstance 返回的对象转换为它转换的类型?

    在下面的代码中 是否可以将 x 转换为您要传递的类型Activator CreateInstance提前不知道是什么 我尝试传入typeof 但这行不通 var testClasses AppDomain CurrentDomain Get
  • 使用java识别文件扩展名

    我在数据库中有不同格式的文件 我想复制到我的本地机器 我如何识别文件格式 doc xls 等 问候 克里希纳 谢谢 您提供建议 根据您的建议 我编写了代码并且已经完成 请查看我的博客 我在这里发布了代码 http muralie39 wor
  • 在 Win32 上,如何使用 Perl、Python 或 Ruby(或 C)检测是否按下了 Left Shift 或 Right ALT?

    在 Win32 上 我想知道如何使用 Perl Python 或 Ruby 甚至在 C 中 检测是否按下了 Left Shift 或 Right ALT 不仅仅是当前窗口 而是整个全局环境 示例 当我输入文档时 我可以按右 ALT 启动用
  • 在没有 root 访问权限的服务器上安装 Docker 二进制文件

    我有一个由提供商提供的服务器 没有任何根访问权限 无法在 etc 或 var lib docker 中编写脚本 Docker 未安装 我的想法是在目录中安装并运行 docker 二进制文件 我将使用 shell 脚本安装 docker 该脚
  • Excel vba xml解析性能

    我正在努力在 Excel 中获取一些输入数据 将其解析为 xml 并使用它来运行 SQL 存储过程 但我遇到了 xml 解析的性能问题 输入表看起来像这样 Dates Name1 Name2 Name3 NameX Date1 Date2
  • 获取子文件夹Azure数据工厂中的所有文件名

    我在数据湖中有一个以下文件夹结构 我想从 ParentFolder 目录的所有子文件夹中获取所有 csv 文件名 我的所有文件都是 csv 文件 是否有一种使用元数据活动的简单方法 父文件夹 gt 年 2020 文件夹 2020 10 20
  • 防止滑动 UIPageViewController 时出现白色间隙

    我以这种方式实现了 UIPageViewController GalleryViewController 是PageViewController的容器 PageViewController 是 uipageViewController 我将
  • 如何使用C#计算段落中某个单词的数量

    我正在尝试编写一个程序 用户向系统提供一个单词和一个段落 系统的工作是计算该单词出现的次数 如何计算 C 中该单词出现的次数 使用正则表达式字边界 anchor int wordCount Regex Matches text b Rege
  • Inno Setup 桌面快捷方式(链接),其中设置了“以管理员身份运行”高级属性

    我正在努力让 Inno setup 5 5 9u 创建一个带有图标并具有高级属性的桌面快捷方式 以管理员身份运行 set Issue 这个问题与以下问题有点不同 如何使用 Inno Setup 在文件上设置 以管理员身份运行 因为我想做的不