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

时间:2012-09-20 14:10:26

标签: c# windows wix windows-installer

  

可能重复:
  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#

1 个答案:

答案 0 :(得分:1)

根据最佳做法,安装人员应......

  • 以标准用户身份启动非提升
  • UI安装顺序未提升
  • 执行序列的转换将提示确认。如果用户是Admin,则会收到UAC提示。如果用户不是管理员,他们会被提示"在肩膀上#34;管理员凭据
  • 安排为与模拟延期的Immeadiate的自定义操作与用户上下文(非提升)一起运行
  • 计划为“已延期但没有模拟”的自定义操作会以SYSTEM
  • 的形式提升

如果MSI是从提升的进程启动的(例如以管理员身份运行CMD),那么UI和Execute都将被提升。这是设计上的,没有办法根据我的知识去除这个,也不能想到你想要的任何理由。