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 桌面快捷方式(链接),其中设置了“以管理员身份运行”高级属性 的相关文章

  • Inno Setup 查找子文件夹

    是否有办法获取目录中的所有 或仅第一个 子文件夹 我正在尝试将文件安装到具有动态名称的子目录中 它不是 Inno Setup 可用的常量之一 有办法找到这个子目录名吗 那么 要获取某个文件夹中第一个找到的子文件夹的名称 无论它是哪个 您可以
  • 使用InnoIDE写入AppData目录?

    我需要写信给 C Users 用户 AppData Roaming AppName 安装过程中的文件夹 我使用 InnoIDE 程序进行设置 非常棒 然而 它似乎缺少一个 AppData 特殊文件夹来轻松访问该目录 例如 您可以使用 Des
  • 根据用户输入更改 AppID 和 AppName

    我想在同一系统上多次安装同一应用程序 例如两个用户使用两个不同的 Web 服务 每个都有自己的 在我的设置脚本中我想更改AppID and AppName基于用户的输入 例如我的默认值AppName Service App 应该改为AppN
  • 将 AppMutex 与静默 Inno Setup 一起使用

    我在 Inno Setup 脚本中使用 AppMutex 来确保产品在安装更新时不再运行 这基本上工作得很好 但是 当使用 verysilent 命令参数运行此设置时 会显示一个对话框 尽管非常安静 表明程序仍在运行 应该关闭 由于程序本身
  • Inno Setup:如何观察变量值或写入调试输出?

    在 Inno Setup 中调试时如何观察变量的值 如何打印一些内容来调试输出 Thanks 目前没有调试监视窗口 但当调试器在断点处停止时 您只需将鼠标悬停在要检查的变量上即可 要将某些内容打印到调试输出 请使用Log http jrso
  • 在已安装应用程序的情况下运行 inno setup 时卸载

    我刚刚开始使用 inno setup 看起来效果很好 但是 当我运行已安装的应用程序的安装程序时 它会重新安装 我想给用户卸载 这可能吗 如果可以 该怎么做 具体来说 我为家庭作业编写了一个游戏 我使用 inno setup 制作了一个安装
  • Inno Setup安装文件名附加AppVersion

    如何追加AppVersion to setup exe file 换句话说 如何使输出文件名为sample setup 1 4 2 0 exe Setup AppName GetStringFileInfo Sample exe Produ
  • Inno Setup 卸载进度条更改事件

    有没有类似的事件 函数CurInstallProgressChanged对于进度条CurProgress and MaxProgressInno Setup 中卸载表单中的值 对此没有本机支持 您可以做的是设置一个计时器并观察时间的变化Un
  • 如何在 Inno Setup 中使用 GetVolumeInformation?

    我需要在使用 Inno Setup 创建的安装过程中获取驱动器号的卷序列号 我知道 DLL 函数可以导入到 Inno 中 但我对它还很陌生 并且在使其工作时遇到一些问题 我知道 kernel32 中的 GetVolumeInformatio
  • Inno Setup 选择一个目录来安装预定义集中的文件

    在这种情况下 我需要将文件安装到特定目录 但在不同的计算机上它可能位于不同的文件夹中 所以我需要检查哪个是正确的 例如 我有一个文件 需要将其安装在A文件夹或B文件夹或C文件夹 取决于计算机有A or B or C 所以我需要先检查一下计算
  • Innosetup - 在安装开始之前引用[Code]中的文件

    这是一种延续这个问题 https stackoverflow com questions 5658488 adding a help button to an innosetup wizard page 我想将一个文件包含在我的安装包中 C
  • 使用 inno setup 安装时检查可用端口

    我正在尝试在 inno setup 中创建以下功能 用户被要求输入他们希望我的应用程序进行通信的端口 一旦他们进入端口 他们就可以点击检查按钮 此检查按钮将运行一些代码来查看安装计算机上的端口是否可用 到目前为止 我可以为用户创建输入框来输
  • 如何在 Inno Setup 中为控件卷出设置动画

    我想在我的安装程序中制作控件滚动的动画 你可以看这个视频 https drive google com file d 1H0HKTPXg9BdYD4HQWqCWHlGSTIHlcJa view 您可以使用计时器来为控件设置动画 Code f
  • Inno Setup 无法导入 DLL

    我没有运气将 Delphi DLL 导入 Inno Setup Unicode 该DLL有一个简单的过程 procedure Foo stdcall begin end exports Foo 该 DLL 包含在安装程序源中 并添加到文件列
  • Inno Setup:如何根据代码更改语言文件

    我使用自己的语言文件 isl 而不是使用 Inno Setup 的默认语言文件 它允许我自定义一些消息 但现在 我想要每种语言文件有两个版本 一个用于首次安装 一个用于更新 但是 是否可以从代码中选择一个文件 如果是 该怎么做 也许有一些比
  • Inno Setup:允许用户只选择可以安装软件的驱动器?

    我可以允许用户只选择要安装软件的驱动器吗 例如 他们可以选择C or D drive C Software D Software 但用户不能指定任何其他内容 就像他们不能选择安装下面的软件一样Downloads or MyDocumnets
  • Vista幻影目录

    我们有一个程序 安装程序会检查配置文件是否存在 如果存在 它不会复制该文件 它假设用户已修改其配置文件并希望保留这些修改 不幸的是 这是一个 Vista 之前的应用程序 它将配置文件保存在 Program Files 中 问题是 如果你在重
  • 欢迎页面未显示,SelectDir 页面首先显示

    我正在尝试使用 Inno Setup 来制作安装程序 我想先显示欢迎页面 然后显示 SelectDir This is CurPageChanged示例代码 procedure CurPageChanged CurPageID intege
  • 使用 Inno Setup 更快地创建安装程序

    当我在大量文件 gt 2GB 上运行 Inno Setup 时 需要很长时间才能运行 我相信它把时间花在了压缩上 这应该是 CPU 限制的 但它只使用了几个 CPU 有没有办法将其分散到 许多 更多核心 具体来说 我正在处理这个提升发布存储
  • Inno Setup:有条件地删除用户主文件夹中的非空目录

    我正在通过 Inno Setup 为我的 Windows 应用程序创建安装程序 应用程序本身将一些配置数据写入用户主文件夹及其自己的子目录中 现在 在卸载过程中 我希望允许用户选择一个选项来删除该文件夹 该文件夹最初不是由 Inno Set

随机推荐

  • 这是在 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 在文件上设置 以管理员身份运行 因为我想做的不