MSI 安装程序自定义操作身份问题

发布于 2024-10-09 12:02:29 字数 284 浏览 4 评论 0原文

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

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

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

I'm creating a custom action that executes a script on a database. The problem is that the connectios uses intergrated security, so when I try to open the connection i get the error: Login Failed for user 'Domain\ComputerName$'.

When i check the identity on the custom action (using System.Security.Principal.WindowsIdentity.GetCurrent()) I always get "NT AUTHORITY\SYSTEM"
but I'm running the installer under my account which has enough privileges on the Database.

How can I run the custom action under the real user runnig the msi file or solve this problem in any other way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

冷夜 2024-10-16 12:02:29

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

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

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

Well, there's a simple solutions for this but maybe it's not suitable for all cases.

If you set the project property of InstallAllUsers
To true, the installer runs with "NT AUTHORITY\SYSTEM" Account, but if you set it to false it runs with the identity of the user who launches the installer.

Setting it to false worked for me, even that I was installing a Windows Service that runs for all users.

甜心小果奶 2024-10-16 12:02:29

简而言之,您需要

  1. 为自定义操作启用“模拟”。
  2. (在 Windows Vista 和 Windows 7 系统上)在“提升”上下文中运行整个安装(即“以管理员身份运行”)。

如何完成#1 取决于您用来创建安装包的内容。为了轻松处理#2,我使用了一个引导程序(使用 Bootstrapper Manifest Generator 创建)配置为运行“提升”。

The short answer is that you're going to need to

  1. Enable 'impersonation' for the custom action.
  2. (On Windows Vista and Windows 7 systems) run the entire installation in an 'elevated' context (i.e. 'Run as Administrator').

How you accomplish #1 depends on what you are using to create the installation package. In order to easily deal with #2, I use a bootstrapper (created with Bootstrapper Manifest Generator) that is configured to run 'elevated'.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文