如何防止标准 Windows 10 用户卸载程序提升?

2024-02-02

我们有一个 x86 Win32 桌面应用程序。当安装程序由标准(非管理员)用户运行时,我们会避免提升和/或显示 UAC 提示并在下安装C:\Users\username\AppData\Roaming\...而不是常见的Program Files目录。

在 Windows 10 上,当我们的卸载程序从以下位置启动时Control Panel -> Programs -> Programs and Features,不显示 UAC 提示,并且卸载程序在不提升的情况下运行。这是期望的行为。当从以下位置启动相同的卸载程序时Start -> Settings -> System -> Apps & features,出现UAC提示。

(在 Opera 浏览器安装程序/卸载程序中可以看到相同的行为。我测试了 v35.0.2066.37。)

为什么相同的卸载程序在从以下位置启动时表现不同Apps & features versus Programs and Features?

从应用程序和功能启动卸载程序时如何避免UAC提示?

我们的卸载程序的清单包括:

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
   <security>
      <requestedPrivileges>
         <requestedExecutionLevel level="asInvoker" />
      </requestedPrivileges>
   </security>
</trustInfo>

我尝试改变requestedExecutionLevel,并且还尝试删除trustInfo完全如此,但无论哪种方式,行为都没有改变。

在 Windows 10 版本 1511 内部版本 10586.104 上进行测试。

Edit:只是为了澄清一下,我试图处理的情况是用户拥有标准帐户并且不知道管理员帐户的密码。如果他们在尝试卸载时看到 UAC 提示,他们别无选择,只能取消它,并且我们的卸载程序不会运行。


据我所知,这是“应用程序和功能”中的一个错误。 WiX 人有关闭了这个问题 https://github.com/wixtoolset/issues/issues/5357作为 Windows 错误,我认为他们已经通知了正确的人@ Microsoft。不过,该行为在 Insider build 15042 中仍然相同,因此可能不会在创作者更新时及时得到修复。

如果标准用户无法提升,则无法使用任何解决方法。

如果它们可以提升,那么您可以使用重新生成解决方法 https://web.archive.org/web/20170104213424/http://brandonlive.com/2008/04/27/getting-the-shell-to-run-an-application-for-you-part-2-how/在评论中发布或手动加载用户配置文件并调用RegOverridePredefKey但它们都是丑陋的黑客(恕我直言)。

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

如何防止标准 Windows 10 用户卸载程序提升? 的相关文章

  • 32位进程在64位操作系统上可以访问多少内存?

    在 Windows 上 正常情况下 32 位进程只能访问 2GB RAM 或通过 boot ini 文件中的特殊开关访问 3GB 在 64 位操作系统上运行 32 位进程时 有多少可用内存 是否有任何特殊的开关或设置可以改变这种情况 默认
  • 如何在python中获取硬盘驱动器的序列号

    我尝试使用wmi来获取硬盘的序列号 我所做的是这样的 启动ipython并使用以下方式获取序列号 import wmi c wmi WMI for x in c Win32 PhysicalMedia print x 结果是这样的 inst
  • 如何将 .bat 文件中的变量获取到 PowerShell 脚本中?

    我正在用 PowerShell 替换 bat 脚本的部分内容 批处理文件的配置是通过以下文件完成的set适当的环境变量 我正在寻找一种方法将这些变量值加载到 ps1脚本 无需修改 bat文件 因为它们也在其他地方使用 一个例子 bat看起来
  • 如何让 shell_exec 在 IIS 6.0 上运行

    问题 我有一个 PHP 脚本 它使用shell exec运行 pdf 到文本转换器 为了简化问题 我创建了一个简短的脚本 使用shell exec只是回显的输出dir命令 当我在 Apache 服务器上运行它时 一切都按预期运行 当我切换到
  • 自动从 C# 代码进行调试过程并读取寄存器值

    我正在寻找一种方法来读取某个地址的 edx 注册表 就像这个问题中所问的那样 读取eax寄存器 https stackoverflow com questions 16490906 read eax register 虽然我的解决方案需要用
  • 批处理文件 - 读取特定行,并将该行中的特定字符串保存为变量

    有没有办法让 for f 循环 或其他任何东西 读取特定行 这是我到目前为止的代码 它读取每一行的第一个单词 echo off set file readtest txt for f tokens 1 delims A in file do
  • 让 Jenkins 对远程用户不可见

    我的本地 Windows 设备上有一个 Jenkins 服务器 但我想让它对外界不可见 有关服务器的办公室规则 明显且不隐晦的 效果令人满意的方法是设置防火墙规则来阻止对其端口的传入访问 但我认为必须有一个 Jenkins 设置来阻止它向除
  • 如何在Windows上安装Xlib(eclipse、c语言)

    好的 我需要使用它进行图形编程 GUI cs 349 uwaterloo 第一次作业 我在谷歌搜索结果中看到随机的 Xlib h 和 Xutil h 文件 但它没有在哪里说明我如何从某个网站安装或下载 Xlib 我什至尝试将 Xlib h
  • 使用 CLion 进行 OpenCV Windows 设置

    我想在 Windows 上为 CLion IDE 设置 OpenCV 我尝试使用 OpenCV 3 1 和 2 4 得到相同的结果 我有 Windows 10 64 位 CLion 使用 cygwin 环境 到目前为止我做了什么 1 从Op
  • 如何在 PowerShell 中远程执行 ELEVATED 远程脚本

    我有两台服务器 serverA Windows 2003 服务器 serverB Windows 7的 ServerA包含一个带有批处理文件 deploy bat 的文件夹 需要从提升的 powershell 提示符执行该批处理文件 在Se
  • 从命令行启用/禁用 Windows 10 中的设备 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个特定的硬件 我想在每次 Windows 重新启动时禁用并重新启用它 我创建了一个批处理脚本 该脚本应该执行此操作 然后运行我的程序
  • 如何从java代码中检测操作系统语言(区域设置)

    从java代码中了解操作系统语言 区域设置 的正确方法是什么 我努力了 Locale getDefault System getProperties user language 但它们并不正确 实际上没有显示 系统区域设置 可以通过 Win
  • 如何通过批处理脚本检查进程是否正在运行

    如何检查应用程序是否正在从批处理 以及 cmd 文件运行 如果程序已经在运行 我不需要启动另一个实例 我无法更改应用程序以使其仅作为单个实例 该应用程序还可以以任何用户身份运行 我想到的另一种可能性 不需要保存文件 灵感来自于使用grep
  • 对话框在时间设计上具有现代外观,但在运行时具有旧外观(使用 Visual C++ 和资源编辑器)

    我正在使用 Visual C 的资源编辑器创建一个对话框 当我运行编辑器的测试按钮时 对话框的组件以现代的外观显示 而当运行创建并显示对话框的应用程序时 它以旧的外观显示 我只是使用 WINAPI 调用来显示对话框 而不是MFC 以下是屏幕
  • 如何将最新的 Windows SDK 版本传递给 CMake?

    如何将最新的 Windows SDK 版本传递给 CMake 这样我就不需要进入 Visual Studio 并从配置属性 常规中手动放置它 我在互联网上搜索 找到了 CMAKE SYSTEM VERSION 变量 并且尝试使用 set C
  • Mercurial/extdiff 没有更改为临时目录(正如我认为应该的那样)

    使用 Windows Mercurial 和 extdiff 扩展 适用于 Mercurial 我试图设置 extdiff 以使用 WinDiff 作为外部比较工具 但我认为我已经将问题范围缩小到足以说明问题在我还没有做到这一点之前 根据我
  • 如何使用Powershell变量打开Edge?

    我已经尝试过以下方法 edge New Object com microsoft edge application edge visible true edge FullScreen true 但我收到错误 New Object Retri
  • Control.FindForm 和 ContainerControl.ParentForm 有什么区别

    我想知道两者之间是否有任何功能 或其他 差异Control FindForm and ContainerControl ParentForm 我一直在使用 ParentForm创建我自己的用户控件时 但有什么原因吗 FindForm会是一个
  • 谁能推荐适用于 Windows 的磁盘 I/O 基准测试软件?

    我想测试文件系统在不同条件下的性能 具体来说 我想在 普通硬盘 和 USB 磁盘上测试未压缩和压缩的 Windows 虚拟机的性能 因为确切了解差异是什么会很有趣 我需要的是一个可以测试文件系统不同方面的程序 随机访问 顺序读 写等 并制作
  • 如何在 Windows 中利用 RDMA

    如何使用 RDMA 将内存块从一台服务器复制到 Windows 下的另一台服务器 我们没有 infiniband 但我们有 10GB 网络交换机 我所需要的只是一个例子 但我在谷歌上运气不佳 EDIT 好吧 到目前为止还没有人回答我的问题

随机推荐