C#-如何从提升进程启动非提升进程

C#-如何从提升进程启动非提升进程,c#,windows,wix,windows-installer,C#,Windows,Wix,Windows Installer,可能重复: 故事: 标准用户以管理员身份启动MSI,MSI在安装完成后启动进程(比如Sample.exe)。 问题: Sample.exe以管理员权限而不是当前桌面(statndard)用户启动。 这引起了一些问题 所以我希望sample.exe应该以当前登录用户(标准用户)的窗口开始 我在谷歌上搜索了一下,找到了。但是本文在C++中,我使用的是C和WIX。因此,如果在c#中有任何其他简单的方法可以做到这一点,如果没有,那么我如何在我的项目中使用本文的代码。 注意:这个问题在stackove

可能重复:

故事:
标准用户
以管理员身份启动MSI
,MSI在安装完成后启动进程(比如Sample.exe)。
问题:
Sample.exe以管理员权限而不是当前桌面(statndard)用户启动。 这引起了一些问题
所以我希望sample.exe应该以当前登录用户(标准用户)的窗口开始 我在谷歌上搜索了一下,找到了。但是本文在
C++
中,我使用的是
C
WIX
。因此,如果在c#中有任何其他简单的方法可以做到这一点,如果没有,那么我如何在我的项目中使用本文的代码。


注意:这个问题在stackoverflow上被问了多次,但我没有找到c的答案。

根据最佳实践,安装程序应该

  • 以标准用户身份启动非提升
  • UI安装顺序未提升
  • 转换到执行序列将提示确认。如果用户是管理员,他们会得到UAC提示。如果用户不是管理员,系统会提示他们输入管理员的“越级”凭据
  • 使用用户上下文(非提升)将自定义操作计划为即时的延迟模拟运行
  • 计划为延迟的自定义操作,没有模拟作为系统提升运行

如果MSI是从提升的进程(例如CMD以管理员身份运行)启动的,那么UI和Execute都将提升。这是出于设计,我无法将其提升到我所知的程度,我也想不到您想要的任何原因。

原因:我的应用程序从internet下载更新版本如果登录用户是标准用户,则Msi由管理员凭据启动(此用户名和密码是我们在新安装时向用户询问的)。更新后,当在选中“启动应用程序”选项的情况下单击MSI向导上的“完成”时,应用程序将正确启动,但在使用live id登录应用程序时,microsoft的idcrl库将报告“调试断言错误”,如果用户取消选中“启动应用程序”选项,然后从双击exe启动应用程序,然后一切正常。这是一种自动更新模式。您是否能够以管理员身份运行命令,然后以用户身份运行命令?如果是,管理员进程可以“播发”(bless)使用msiexec/jm命令的MSI和用户进程可以使用msiexec/i安装受祝福的软件包。但必须遵循所有MSI最佳实践才能使其工作。是否/jm开关在域帐户上工作?