如何从启用了“以管理员身份运行”的基于 WiX 的安装程序安装桌面快捷方式(到批处理文件)?

2024-01-07

我正在从基于 WiX 的安装程序安装桌面快捷方式(到批处理文件) - 如何在启用“以管理员身份运行”设置的情况下自动配置此快捷方式?目标操作系统是Windows Server 2008 R2,并且安装程序正在以提升的权限运行。

Update:
感谢@Anders 提供的链接,我得以完成此工作。我需要在 C# CustomAction 中执行此操作,因此这里是代码的 C# 版本:

namespace CustomAction1
{
 public class CustomAction1
 {
  public bool MakeShortcutElevated(string file_)
  {
   if (!System.IO.File.Exists(file_)) { return false; }

   IPersistFile pf = new ShellLink() as IPersistFile;
   if (pf == null) { return false; }

   pf.Load(file_, 2 /* STGM_READWRITE */);
   IShellLinkDataList sldl = pf as IShellLinkDataList;
   if (sldl == null) { return false; }

   uint dwFlags;
   sldl.GetFlags(out dwFlags);
   sldl.SetFlags(dwFlags | 0x00002000 /* SLDF_RUNAS_USER */);
   pf.Save(null, true);
   return true;
  }
 }

 [ComImport(), Guid("00021401-0000-0000-C000-000000000046")]
 public class ShellLink { }

 [ComImport(), InterfaceType(ComInterfaceType.InterfaceIsIUnknown), Guid("45e2b4ae-b1c3-11d0-b92f-00a0c90312e1")]
 interface IShellLinkDataList
 {
  void AddDataBlock(IntPtr pDataBlock);
  void CopyDataBlock(uint dwSig, out IntPtr ppDataBlock);
  void RemoveDataBlock(uint dwSig);
  void GetFlags(out uint pdwFlags);
  void SetFlags(uint dwFlags);
 }
}

我猜您需要自定义操作并自行调用 COM 接口。查询 IShellLink(或 IPersistFile?)中的 IShellLinkDataList,然后:IShellLinkDataList->SetFlags(orgFlagsFromGetFlags|SLDF_RUNAS_USER);

编辑:雷蒙德有完整的示例代码blog https://web.archive.org/web/20170924200159/https://blogs.msdn.microsoft.com/oldnewthing/20071219-00/?p=24103/

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

如何从启用了“以管理员身份运行”的基于 WiX 的安装程序安装桌面快捷方式(到批处理文件)? 的相关文章

  • 在 Windows 7 上安装 Visual Studio 2015 社区版

    我尝试在 Windows 7 64 位上安装 Visual Studio 2015 社区版 由于某种原因 安装程序显示 安装被阻止 并显示错误 此版本的 Visual Studio 需要一台装有较新版本 Windows 的计算机 为了完全安
  • 将文件夹中的所有文件及其所有子文件夹移动到一个大文件夹中 - windows xp

    我有一个文件夹 c downloads ffme 里面有很多子文件夹 每个子文件夹中都有不同数量的文件 我想将所有这些单独的文件合并到一个大文件夹中 同时将它们从子文件夹中删除 我希望最终得到一个包含大量文件的文件夹 但没有子文件夹 我怎样
  • 从 Python 下载/安装 Windows 更新

    我正在编写一个脚本来自动安装 Windows 更新 我可以将其部署在多台计算机上 这样我就不必担心手动更新它们 我想用 Python 编写这个 但找不到任何关于如何完成此操作的信息 我需要知道如何搜索更新 下载更新并从 python 脚本安
  • 在 Windows 7 上的 Sourcetree 中比较 Word docx 文件

    我一直在尝试获取在 Windows 7 上的 Sourcetree 中工作的 Word docx 文件的文本差异 我已按照此处的说明进行操作将 Microsoft Word 与 git 结合使用 http blog martinfenner
  • 如何设置任务在使用 vbs 登录时以当前用户身份运行而无需管理员权限?

    从命令行 我可以创建一个在登录时运行的计划任务 无需管理员权限或用户输入密码来设置任务 但是我必须使用 xml 文件来执行此操作 下面是一个示例 xml 其中 Domain User 部分必须在运行时替换为当前用户的域和名称
  • git 认为文件已更改

    我在一台机器上对一个项目做了一些工作 然后推送到 github 在另一台机器上克隆并做了一些工作 然后推送 然后我回到第一台机器并做了一个pull 现在 第一台机器认为项目中最初的所有文件都已更改 我试过了 git checkout f a
  • 无法加载 JNI 共享库 (JDK)

    当我尝试打开时Eclipse http www eclipse org 弹出对话框指出 无法加载 JNI 共享库 C JDK bin client jvm dll 此后 Eclipse 强制关闭 我想提出以下几点 我检查了这条路径上是否存在
  • 所有平台上的java

    如果您想用 java 为 Windows Mac 和 Linux 编写桌面应用程序 那么所有这些代码都相同吗 您只需更改 GUI 即可使 Windows 应用程序更像 Windows 等等 如果不深入细节 它是如何工作的 Java 的卖点之
  • 我可以在我的机器上同时安装 python 2.7 和 3.5 的tensorflow吗?

    目前我通过 Anaconda 在我的机器 MAC OX 上安装了 Python 2 7 Python 3 5 Tensorflow for Python 3 5 我也想在我的机器上安装 Tensorflow for Python 2 7 当
  • Node.js 升级在 Windows 中仍然显示旧版本

    我已使用 msi 安装程序下载并安装了新版本的 nodejs 4 1 2 之后我跑了node v 但它仍然显示旧版本 0 12 2 我尝试重新启动Windows 甚至卸载nodejs并重新安装它 但仍然显示相同的内容 为什么会发生这种情况
  • 在高 dpi Windows 平台上自动重新缩放应用程序?

    我正在编写一个需要在高 dpi Windows 192dpi 而不是 96dpi 上运行的 Qt 应用程序 不幸的是 Qt 框架尚不支持高 dpi 至少在 Windows 上 因此我的应用程序及其所有元素看起来只有应有尺寸的一半 有没有办法
  • CPU 周期与总 CPU 时间

    在 Windows 上 GetProcessTimes 和 QueryProcessCycleTime 可用于获取应用程序所有线程的总计 我期望 显然是天真地 找到总周期数和总处理器时间 用户 内核 之间的比例关系 当转换为相同的单位 秒
  • Visual C++ 找不到“Windows 类型”,如 PVOID、DWORD、ULONG 等

    Windows 似乎无法找到任何这些类型 我完全不知道该怎么办 我在 MSDN 上找到的东西似乎表明它们是默认包含的 但它们在 Native 程序或 CLR 程序中不起作用 我收到的具体错误是
  • 用于推送通知的设备令牌

    我正在实施推送通知服务 我需要创建一个数据库来存储 4 个移动平台的所有设备令牌 我想根据他们的平台 iOS Android BlackBerry WP7 来组织它们 但是有什么方法可以区分平台 这样如果我只想向 Android 用户发送消
  • 如何以管理员身份在 rake 任务中运行 shell 命令?

    我有一个简短的 cmd 文件 我想将其作为部署过程的一部分运行 不幸的是 cmd 文件需要管理员权限 是否可以从 rake 中获得管理员权限 或者我是否需要以管理员身份启动 shell 您可以尝试runas http ss64 com nt
  • Windows:使用 CMD(或 Java)从非特权运行特权命令

    我将有一个以管理员身份运行并侦听端口的服务 我的 GUI 程序将与管理员服务对话以获取需要管理员权限的项目 如果该服务尚未运行 我需要启动它 如何让我的 GUI 程序以管理员身份运行命令 我假设用户会被询问是否要继续 我希望我可以在 CMD
  • 批处理脚本 - IF EXIST 复制到 %localappdata% 错误

    我似乎被批处理脚本困住了 需要一些帮助 基本上我需要检查文件是否存在于文件夹中 localappdata 如果确实如此 则覆盖该文件 如果没有放置在不同的位置 那么目前它的内容如下 IF EXIST localappdata foldern
  • 已达到网络 BIOS 命令限制

    我的 ASP Net 应用程序从另一台 Windows 服务器上的共享文件夹获取文件 当请求增加时 我收到以下错误 The network BIOS command limit has been reached 我已按照以下步骤操作微软 K
  • 如何一步步遍历目录树?

    我发现了很多关于遍历目录树的示例 但我需要一些不同的东西 我需要一个带有某种方法的类 每次调用都会从目录返回一个文件 并逐渐遍历目录树 请问我该怎么做 我正在使用函数 FindFirstFile FindNextFile 和 FindClo
  • 如何为 Windows toast 注册协议?

    如何注册 Windows toast 协议 样本中来自https blogs msdn microsoft com tiles and toasts 2015 07 02 adaptive and interactive toast not

随机推荐

  • UINavigationController 的 addChildViewController 和 topViewController 之间的相互作用

    我有类似模态视图控制器的东西 我需要将其显示在其他视图控制器上方 我没有使用常规模态控制器功能 presentViewController 和朋友 因为我需要更好地控制这个过程 相反 我使用视图控制器包含功能 addChildViewCon
  • 检测 iPhone 屏幕上的亮点/暗点

    我想检测并标记图像上最亮和最暗的点 例如 我正在创建 AVCaptureSession 并使用 AVCaptureVideoPreviewLayer 在屏幕上显示视频帧 现在 在这个相机输出视图上 我希望能够标记当前最暗和最亮的点 我必须读
  • IE框架边框替代

    对于这行代码 我收到此错误 validator w3 org XHTML 1 0 Transitional there is no attribute frameBorder 我在用着frameBorder因为 IE8 在 iframe 上
  • 有人使用 Android NDK 构建过 ZBar 吗?

    我正在尝试将 ZBar 集成到我的 Android 应用程序中 但无法构建本机库 我想知道是否有人以前做过并愿意与我分享 我知道这个问题很老了 但是 ZBar 提供了 android SDK http sourceforge net pro
  • 可以使用单个正则表达式来解析函数参数吗?

    Problem 有一个程序文件 在文件中的某个位置包含以下代码片段 food apples oranges pears tomato 该函数可以包含任意数量的参数 但它们必须是用逗号分隔的字符串 所有参数字符串都是小写单词 我希望能够使用正
  • 我应该如何记录继承的成员? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 考虑一下我有一个复杂的类结构 其中许多元素继承自其他元素 我可能有一个方法GetStuff string stuffName int count
  • 以编程方式检索 iPhone 上的内存使用情况

    我正在尝试以编程方式随时检索我的 iPhone 应用程序正在使用的内存量 是的 我知道 ObjectAlloc Leaks 我对这些不感兴趣 只是想知道是否可以编写一些代码并获取正在使用的字节数并通过 NSLog 报告它 Thanks 要获
  • 在 Swift 4 中调整 UISwitch 的大小

    我想更改 Swift 4 中 UISwitch 的默认大小 我查看了各种选项 但它们都与 v3 相关并且不起作用 请问有人可以建议一个在 Swift 4 中以编程方式执行此操作的示例吗 谢谢你 Edit 我尝试过以下示例 switchTes
  • 如何登录 SailsJS

    登录 SailsJS 的实际语法是什么 文档没有任何内容 但在网站的路线图中找到了以下行 将 Sails log winston 包装器 作为一个单独的模块拉出来 这样它就可以 由水线使用 我想象它是这样的 Sails log Sails
  • 三行模态,固定标题、底行和可滚动的中间行

    我正在尝试创建一个具有顶部 中间和底部的模态 顶部始终是固定高度 底部必须 粘 在底部上 并且可能会有所不同 其中的所有内容和元素都必须从底部构建 因此 如果有一行文本 底部将是该行的高度 如果有 3 或 4 行文本 底部会根据需要向上推
  • 如何在PHP中使用其原始参数调用父类构造函数

    我有这个代码 class A var arr array function construct para echo Not called class B extends A function construct arr new Item 由
  • LOCK_NB 被忽略

    运行此代码两次 fp fopen test test wb if flock fp LOCK NB LOCK EX fwrite fp data echo written sleep 5 else echo skipped ok flock
  • 如何使用 YouTube IFrame Player API 监听时间更改事件?

    我在 YouTube IFrame Player API 文档上找不到任何方法来监听时间变化 因此我可以在 UI 中显示视频的当前时间 持续时间 有没有办法在不轮询的情况下做到这一点getCurrentTime YouTube IFrame
  • Netty Channel.write 线程安全吗?

    我有一个 Netty 应用程序 我希望有多个线程写入通道 我只是想知道 Channel write 是否线程安全 从代码中可以看出 ChannelOutboundBuffer addMessage 方法本身不是线程安全的 然而 写入通道是
  • 如何在 Asyncio 中列出文件? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我希望能够在不阻塞的情况下获取文件列表 但我没有在文档 https docs python org 3 library asyncio
  • Kafka消费者配置/性能问题

    我正在尝试使用 kafka 作为 AWS SQS 的替代品 其动机主要是为了提高性能 其中 kafka 将消除一次拉取 10 条消息且上限为 256kb 的限制 这是我的用例的高级场景 我有一堆爬虫正在发送文档以进行索引 有效负载的大小平均
  • 单元测试构造函数时使用多个断言?

    我正在尝试使用 2 个构造函数对一个类进行单元测试 每个构造函数都有多个设置公共属性的参数 我的问题是 我是否应该只有 2 个具有多个断言的单元测试来检查每个属性是否已设置 或者是否对每个构造函数的每个参数进行测试 Public Perso
  • 有没有办法在CSS中创建canvas元素的3D圆柱体?

    我想将画布呈现为一个圆锥体 你可以像轮子一样双向旋转 这对于 JS CSS3 来说是可能的吗 您应该看看这个新的 CSS3 功能 自定义滤镜 CSS 着色器 这里有一些非常好的演示 比我能更好地描述整个事情 如何在 Chrome 上启用它
  • 具有多个参数的函数方差

    在我们的代码中尝试过类似的操作 但失败了 Func
  • 如何从启用了“以管理员身份运行”的基于 WiX 的安装程序安装桌面快捷方式(到批处理文件)?

    我正在从基于 WiX 的安装程序安装桌面快捷方式 到批处理文件 如何在启用 以管理员身份运行 设置的情况下自动配置此快捷方式 目标操作系统是Windows Server 2008 R2 并且安装程序正在以提升的权限运行 Update 感谢