MSI安装程序自定义操作标识问题

时间:2010-12-29 20:40:58

标签: c# windows-installer identity

我正在创建一个在数据库上执行脚本的自定义操作。问题是连接器使用集成安全性,所以当我尝试打开连接时,我收到错误:用户'Domain \ ComputerName $'的登录失败。

当我检查自定义操作上的标识时(使用System.Security.Principal.WindowsIdentity.GetCurrent()),我总是得到“NT AUTHORITY \ SYSTEM” 但是我在我的帐户下运行安装程序,该安装程序在数据库上拥有足够的权限。

如何在真实用户运行msi文件下运行自定义操作或以其他任何方式解决此问题?

2 个答案:

答案 0 :(得分:2)

嗯,有一个简单的解决方案,但它可能并不适合所有情况。

如果设置 InstallAllUsers 的项目属性 为true,安装程序使用“NT AUTHORITY \ SYSTEM”帐户运行,但如果将其设置为false,则使用启动安装程序的用户的身份运行。

将其设置为false对我有用,即使我正在安装为所有用户运行的Windows服务。

答案 1 :(得分:1)

简短的回答是你需要

  1. 为自定义操作启用“模拟”。
  2. (在Windows Vista和Windows 7系统上)在“提升”上下文中运行整个安装(即“以管理员身份运行”)。
  3. 如何完成#1取决于您用于创建安装包的内容。为了轻松处理#2,我使用了一个配置为运行'已提升'的引导程序(使用Bootstrapper Manifest Generator创建)。