【问题标题】:C# - How to start a non elevated process from elevated Process [duplicate]C# - 如何从提升的进程启动非提升的进程[重复]
【发布时间】:2012-09-20 14:10:25
【问题描述】:

可能重复:
Start non-elevated process from elevated process

故事:
Standard-User 启动一个 MSI As Administrator 并且 Msi 在安装完成时启动一个进程(比如说 Sample.exe)。
问题:
Sample.exe 以管理员权限而不是当前桌面 (statndard) 用户启动。 这导致了一些问题。
所以我希望 sample.exe 应该以当前窗口登录用户(标准用户)开始。

我做了一些谷歌搜索,发现 this Article 。但是这篇文章在C++,我使用的是C#WIX。因此,如果在 c# 中有任何其他简单的方法可以做到这一点,如果没有,那么我如何在我的项目中使用本文的代码。

NOTE: This question has been asked multiple time on stackoverflow but i didnt find the answer for c#

【问题讨论】:

    标签: c# windows wix windows-installer


    【解决方案1】:

    根据最佳实践,安装人员应...

    • 以标准用户身份启动非提升
    • UI 安装顺序未提升
    • 转换到执行序列将提示确认。如果用户是管理员,他们会收到 UAC 提示。如果用户不是管理员,则会提示他们提供管理员的“肩负”凭据
    • 计划为即时或延迟模拟的自定义操作使用用户上下文运行(非提升)
    • 计划为 Deferred with No Impersonation 的自定义操作运行提升为 SYSTEM

    如果 MSI 从提升的进程(例如 CMD 以管理员身份运行)启动,则 UI 和 Execute 都将提升。这是设计使然,据我所知,没有办法将其降级,我也想不出您想要这样做的任何原因。

    【讨论】:

    • 原因:我的应用程序从 Internet 下载更新版本 如果登录用户是标准用户,则 Msi 由管理员凭据启动(我们在全新安装时向用户询问此用户名和密码)。更新后,单击“启动应用程序”选项在 MSI 向导上完成,然后应用程序正常启动,但在使用 live id 登录应用程序时,微软的 idcrl 库报告“调试断言错误”,如果用户取消选中“启动应用程序”选项并从双击 exe 启动应用程序,然后一切正常。
    • 所以这是一个自动更新模式。您是否能够以管理员身份运行命令,然后以用户身份运行命令?如果是这样,管理员进程可以使用 msiexec /jm 命令“宣传”(祝福​​)MSI,然后用户进程可以使用 msiexec /i 安装祝福包。但必须遵循所有 MSI 最佳实践才能使其发挥作用。
    • /jm 开关是否适用于域帐户?
    猜你喜欢
    • 2011-04-25
    • 2014-08-20
    • 1970-01-01
    • 2013-07-19
    • 2014-04-30
    • 2015-07-20
    • 2022-11-22
    • 2011-01-31
    • 1970-01-01
    相关资源
    最近更新 更多