我找到了解决方法...
我发现它在安装过程中将几个 dll 提取到 temp 文件夹中,并且 MSI 日志抱怨加载其中一个。没有发现任何依赖加载问题,所以我尝试将它们全部复制到 C:\Windows\SysWow64,但其中一个(sqlunirl.dll)被拒绝访问,因为它是操作系统的一部分。如果我更改了该 dll 的所有者和权限,我可以将其替换为提取的那个,安装 MSDE,然后将其替换为原始的 Win10 那个。但是 SQL 服务管理器应用程序随后拒绝启动,但由于 exe 总是首先在自己的文件夹中查找 dll,因此将相同的 dll 放在 C:\Program Files (x86)\Microsoft SQL Server\80\Tools\Binn 中。以防万一,我也将它复制到其他包含可执行文件的文件夹中。我'
takeown /f C:\Windows\SysWOW64\sqlunirl.dll /a
icacls C:\Windows\SysWOW64\sqlunirl.dll /grant *S-1-5-32-544:f
IF NOT EXIST C:\Windows\SysWOW64\sqlunirl.bak move C:\Windows\SysWOW64\sqlunirl.dll C:\Windows\SysWOW64\sqlunirl.bak
copy /y "%~dp0sqlunirl.dll" C:\Windows\SysWOW64
"%~dp0Setup.exe" (plus your extra parameters such as SAPWD=PASSWORD)
move /y C:\Windows\SysWOW64\sqlunirl.dll "C:\Program Files (x86)\Microsoft SQL Server\80\Tools\Binn"
copy /y C:\Windows\SysWOW64\sqlunirl.dll "C:\Program Files (x86)\Microsoft SQL Server\80\COM"
copy /y C:\Windows\SysWOW64\sqlunirl.dll "C:\Program Files (x86)\Microsoft SQL Server\Mssql$InstanceName\BinnMSSQL$InstanceName\Binn"
move /y C:\Windows\SysWOW64\sqlunirl.bak C:\Windows\SysWOW64\sqlunirl.dll
icacls C:\Windows\SysWOW64\sqlunirl.dll /remove *S-1-5-32-544
icacls C:\Windows\SysWOW64\sqlunirl.dll /grant *S-1-5-32-544:(GR,GE,WO)
icacls C:\Windows\SysWOW64\sqlunirl.dll /setowner *S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464
(注意:SID 用于 Administrators 组和 TrustedInstaller,因此它适用于任何语言。通用读取和通用执行权限是管理员组的默认权限,但我也应用了写入所有者,以便我可以将其设置回 TrustedInstaller 作为我找不到使用 TakeOwn.exe 将其重新设置的方法!)