我正在创建一个在数据库上执行脚本的自定义操作。问题是连接器使用集成安全性,所以当我尝试打开连接时,我收到错误:用户'Domain \ ComputerName $'的登录失败。
当我检查自定义操作上的标识时(使用System.Security.Principal.WindowsIdentity.GetCurrent()
),我总是得到“NT AUTHORITY \ SYSTEM”
但是我在我的帐户下运行安装程序,该安装程序在数据库上拥有足够的权限。
如何在真实用户运行msi文件下运行自定义操作或以其他任何方式解决此问题?
答案 0 :(得分:2)
嗯,有一个简单的解决方案,但它可能并不适合所有情况。
如果设置 InstallAllUsers 的项目属性 为true,安装程序使用“NT AUTHORITY \ SYSTEM”帐户运行,但如果将其设置为false,则使用启动安装程序的用户的身份运行。
将其设置为false对我有用,即使我正在安装为所有用户运行的Windows服务。
答案 1 :(得分:1)
简短的回答是你需要
如何完成#1取决于您用于创建安装包的内容。为了轻松处理#2,我使用了一个配置为运行'已提升'的引导程序(使用Bootstrapper Manifest Generator创建)。