我有一个Windows安装程序,它正在创建一个数据库作为安装过程的一部分。安装应用程序CREATE DATABASE
进程失败,因为Windows安装程序使用了错误的用户。它使用NT AUTHORITY\SYSTEM
而不是使用登录用户。 NT AUTHORITY\SYSTEM
用户无权创建数据库。
有没有办法强制安装程序使用登录用户?
在VS 2017和MS Visual Studio 2017安装程序项目中使用Windows 10环境。
答案 0 :(得分:3)
简短的回答是,您无法在安装了InstallAllUsers的Visual Studio安装程序中执行此操作,因为所有VS安装程序生成的自定义操作都作为系统帐户运行。因此,您需要使用Orca等编辑工具更改MSI文件中的自定义操作设置。您可以在MSI文件的CustomAction表中找到自定义操作,查看Type值(它可能是类型3074),然后关闭msidbCustomActionTypeNoImpersonate位,以便它作为安装用户模拟运行。
https://msdn.microsoft.com/en-us/library/windows/desktop/aa368069(v=vs.85).aspx
请注意,作为安装用户运行模拟有自己的一组问题,因为它与运行交互式用户不同。未加载用户配置文件,因此与用户关联的对象(例如HKCU,用户配置文件文件夹)非常不可靠。
许多人在第一次启动应用程序时使用单独的程序填充数据库,以便它作为交互式用户正常运行,并且可以作为独立程序进行开发和调试。如果在安装过程中填充失败,您要么放弃安装并回滚,要么继续安装并最终得到一个空数据库,为此您可能需要一个程序来填充它。