我正在Visual Studio 2010中创建一个部署项目,在安装结束时,它需要以开始安装的用户身份启动一个流程。
由于安装过程需要提升权限才能运行,因此该进程将作为系统用户启动。
有没有办法强制进程在安装过程中以启动安装的用户身份运行?这些信息是否可用?
答案 0 :(得分:0)
Visual Studio部署项目是基于MSI或Windows Installer的。安装程序通常仅在需要将修改应用于系统时才会提升,收集数据时的步骤以及完成页面作为当前用户运行,非提升。
安装结束时的应用程序是否真的开始提升? 如果是这样,你需要一个包装器。开始一些无法获得的东西的最简单方法是保持当前用户的上下文。包装器首先启动安装,在启动时提升;安装完成后,它会以当前非提升用户身份启动您的应用程序。
尝试从提升过程中启动非升级过程是一项艰巨且容易出错的任务。如果您仍想遵循此道路,请阅读博客文章 How do I start a program as the desktop user from an elevated app?
答案 1 :(得分:0)
默认情况下,Visual Studio安装项目使用no impersonation运行自定义操作(msidbCustomActionTypeNoImpersonate)。因此,最快的解决方案是通过使用Orca编辑MSI来删除无模拟标记。
在自定义安装时,Visual Studio非常有限。这就是大多数复杂产品使用其他设置创作工具的原因。