gpt4 book ai didi

c# - 标记 MSI,因此它必须以提升的管理员帐户运行

转载 作者:IT王子 更新时间:2023-10-29 04:24:26 26 4
gpt4 key购买 nike

我有一个 CustomAction 作为 MSI 的一部分。

它必须作为域帐户运行,该域帐户也是本地管理员帐户的成员。

它不能使用 NoImpersonate 标志以 NT Authority\System 身份运行自定义操作,因为它无法访问网络资源。

在启用了 UAC 的 Vista/2008 上,如果 NoImpersonate 关闭,那么它将作为执行用户运行,但使用 unprivileged token 并且无法访问本地资源,例如 .installState。 See UAC Architecture

任何人都知道一种方法

  • 强制 MSI 使用提升的 token 运行,就像从提升的命令提示符运行一样?

  • 强制 CustomAction 运行提升( list 中的 requireAdministrator 似乎不起作用)?

  • 确定 UAC 是否已启用以及它是否已提升运行,如果已启用则发出警告或取消安装?

最佳答案

回答我自己对任何其他看到这个的可怜的 s0d 的问题。

  • 您不能向 MSI 添加 list 。您可以添加一个 SETUP.EXE 或 Bootstrap 来对 MSI 进行 shell 处理并使用 requireAdministrator 对其进行显示,但这在某些方面违背了使用 MSI 的目的。

  • 向 CustomAction 添加 list 不起作用,因为它是从 msiexec.exe 运行的

我解决这个问题的方法是设置 MSIUSEREALADMINDETECTION属性设置为 1,以便特权条件实际起作用并为 Privileged 添加启动条件这会给出有关通过提升的命令提示符运行的错误消息,然后退出安装。

这有一个令人愉快的副作用 - 当从提升的命令提示符运行 msi 时,延迟的 CustomActions 将作为当前用户运行,具有完整的管理员 token (而不是标准用户 token ),而不管 NoImpersonate设置。

更多详情 - http://www.microsoft.com/downloads/details.aspx?FamilyID=2cd92e43-6cda-478a-9e3b-4f831e899433

[编辑] - 我把脚本放在这里 lets you add the MSIUSEREALADMINDETECTION property因为 VS 没有能力做到这一点,而且 Orca 很痛苦。

关于c# - 标记 MSI,因此它必须以提升的管理员帐户运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/304353/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com