2009-10-09 105 views
6

我使用Visual Studio 2008构建MSI安装包。在安装中,我有许多自定义操作。在OnAfterInstall自定义操作中,我尝试启动由安装部署的exe文件。该exe开始正常,但在NT AUTHORITY \ SYSTEM的安全上下文中运行(即在授予Windows Installer进程的提升特权下)。我实际上需要exe在当前登录的用户的安全上下文中运行,他们首先开始安装。有谁知道如何启动该exe文件,因此它运行在这个“减少的”上下文中。我真的想避免在可能的情况下要求用户提供登录凭据。msi安装后使用当前用户权限启动exe

回答

2

您需要使用远程桌面服务API:http://msdn.microsoft.com/en-us/library/aa383464%28v=VS.85%29.aspx。它从WinXP开始可用。

此API允许您在任何登录用户帐户的上下文中运行您的应用程序。您需要以SYSTEM的身份运行才能使用它。你是。 例如,您可以使用WTSEnumerateSessions枚举会话,然后通过WTSQueryUserToken获取用户令牌并使用此令牌运行应用程序。