Windows 安装程序使用 NT AUTHORITY\SYSTEM 而不是登录用户

Windows installer using the NT AUTHORITY\SYSTEM instead of login user

我有一个 windows 安装程序,它在安装过程中创建了一个数据库。安装应用程序 CREATE DATABASE 过程失败,因为 windows 安装程序使用了错误的用户。它使用 NT AUTHORITY\SYSTEM 而不是使用登录用户。 NT AUTHORITY\SYSTEM用户没有创建数据库的权限。

有没有办法强制安装程序使用登录用户?

使用 Windows 10 环境与 VS 2017 和 MS Visual Studio 2017 安装程序项目。

简短的回答是,您不能在 InstallAllUsers 设置的 Visual Studio 设置中执行此操作,因为所有 VS 安装程序都会生成自定义操作 运行 作为系统帐户。因此,您需要使用 Orca 等编辑工具更改 MSI 文件中的自定义操作设置。您会在 MSI 文件的 CustomAction table 中找到自定义操作,查看 Type 值(可能是类型 3074),然后关闭 msidbCustomActionTypeNoImpersonate 位,以便它 运行s 模拟为安装用户。

https://msdn.microsoft.com/en-us/library/windows/desktop/aa368069(v=vs.85).aspx

请注意,模拟为安装用户的 运行ning 有其自身的一系列问题,因为它与作为交互式用户的 运行ning 不同。未加载用户配置文件,因此与用户关联的对象(例如 HKCU、用户配置文件文件夹)非常不可靠。

许多人在应用程序首次启动时使用单独的程序填充数据库,以便它 运行 可以作为交互式用户正常使用,并且可以作为独立程序进行开发和调试。如果在安装过程中填充失败,您要么放弃安装并回滚,要么继续安装并最终得到一个空数据库,为此您可能需要一个程序来填充它。