民间,
目前我用Visual Studio 2010构建的MSI有一个奇怪的问题......
当我运行msi时,它执行一些任务,然后执行我们构建的工具 - 然后该工具执行一些我们在自定义任务中无法完成的更高级的工作。
这里的问题是,当msi启动我的自定义构建工具时,它不会使用与启动MSI相同的凭据(即我的管理登录)执行它。
我可以将一个参数传递给MSI以进行此操作吗?或者也许我可以在启动时将凭证传递给流程?
我的流程是使用Process process = Process.Start(procInfo)
开始使用的。我还注意到能够传递参数化的用户名/密码/域,但这取决于正在安装的用户 - 这可以从安装程序中提取出来吗?
欢迎任何帮助(或问题)。
戴夫
编辑:为了清楚起见......我在我的域帐户下运行MSI,我希望我的自定义流程在该“上下文”下运行。目前,它在SYSTEM帐户(而不是mydomain \ me)下启动(无论我是否以管理员身份启动)。如果有帮助,我正在使用Windows Server DataCenter版本。我还应补充一点,我认为这是一个政策问题,但我不知道要检查什么/在哪里检查......
答案 0 :(得分:1)
默认情况下,Windows Installer以当前用户身份运行自定义操作。如果MSI升级,则自定义操作将作为提升用户运行。
请注意,如果您以管理员身份运行MSI,并不意味着您的自定义操作将具有完全管理员权限。在Vista或更高版本上,任何用户都可以通过提升获得管理员权限。
因此,如果您的自定义操作需要管理员权限,请确保他们使用 msidbCustomActionTypeNoImpersonate 标记,以便它们在本地系统帐户下运行。
如果这不是问题,您只需要访问当前用户数据,请提供更多详细信息?