SolidWorks VC VSTA 安装 权限 注册表 策略组 相关问题,已解决

Feel free for technical discus.

背景

安装SolidWorks失败,卸载不干净,也删除清除不了,不想重装,边搜索解决方案边整理。截止2021-1-14,搜索了众多中英文条目。
虽然是针对自己的问题,最终自己调试解决,但感觉覆盖了很多相关问题。萝卜L发于博客园

本文范围

  • 以SolidWorks (SW) 2020为主,应该涵盖2019、2018、2016、2015。
  • 以64位(64-bit)为主,应该适用于32位(32-bit)。
  • 涉及的组件:
    • Microsoft Visual Studio Tools for Applications 2015 (VSTA)。安装程序包名称vsta_setup.exe
    • Visual C++ Redistributable Packages for Visual Studio 2013(VC Redistributable),安装程序包文件名称VCRedist15vcredist_x86.exe(vc_redist.x86),vcredist_x64.exe(vc_redist.x64)。
      • VCRedist15,VCRedist12,VCRedist11是一类,VCRedist10,VCRedist9是一类。
      • vcRuntimeMinimum/Additional
  • 涉及的问题/故障:
    • 安装管理程序无法在此注册表位置生成注册表项: HKLMSoftwareWow6432NodeSolidWorks
    • 0x80070005 - 拒绝访问
      • 0x80070005 Failed to create registration key
    • 0x80070659 系统策略禁止这个安装。请与管理员联系。系统管理员设置了系统策略,禁止进行此安装。This installation is forbidden by system policy. Contact you system administratior
      • Error 0x80070659: Failed to install MSI packageFailed to execute MSI package.Failed to configure per-machine MSI package.Error 0x80070659: Failed to execute MSI package.
    • 安装管理程序遇到严重错误
    • Could not open key: UNKNOWNComponentsxxyy.   Verify that you have sufficient access to that key, or contact your support personnel.
  • 涉及的系统配置:
    • 注册表(Registry
    • 策略组(GPO: Group Policy Object)。(实质为注册表的图形界面)
    • 权限(Permissions、Rights)。关于用户用户组,分文件夹注册表访问权限。
    • 用户账户控制设置(UAC)。即以管理员身份运行
  • 涉及的日志记录:
    • SolidWorks的记录:C:Users用户名AppDataRoamingSOLIDWORKSInstallation LogsSummaryIMLog_20200-XXXXXX_XXXXX.txt
    • (如后安装过程提及的)各基础运行库的记录:
      • C:Users用户名AppDataLocalTempdd_vcredist_amd64_XXXXXXXXXXXXXX.logdd_vcredist_x86_XXXXXXXXXXXXXX.log
      • C:Users用户名AppDataLocalTempdd_vsta_setup_(var.MajorVersion)_XXXXXXXXXXXXXX.log

安装过程:

  1. .setup.exe实际调用sldimsldIM.exe。由其主导安装以下基础运行库、安装包。
  2. 先安装基础运行库。位于.PreReqs。为可执行文件(后缀.exe),可(无配置、参数)独立运行。
  3. 再安装子安装包(后缀.msi,即microsoft installer)。
    1. .swwidataSolidWorks.Msi、.swwilangchinese-simplifiedchinese-simplified.msi等。
    2. 可运行,但可能需要传递参数、配置。

任意子过程失败可能导致整个安装过程失败。
失败后,SolidWorks会有故障描述,生成(如上)日志记录。各运行库亦可能有自己的记录。萝卜L发于博客园

故障分析:

调试能精准定位故障,但毕竟麻烦,建议先尝试常规方法。
同时我觉得大多数用户不会特别配置系统(注册表、策略组、用户账户、权限等),不论主动,或由其他软件所设置。
故障通常源于未卸载干净(卸载过程中断、甚至卸载后没及时重启、死机等)。
不能具体问题具体分析,就先多尝试吧。萝卜L发于博客园

常规故障处理:

  • 对基础运行库故障。
  1. 按提示安装
  2. 当已安装,若有选项尝试修复
  3. 若修复失败,尝试先卸载,后安装;
  4. 尝试安装高版本覆盖
    高版本不是指VC2019高于VC2015,而是版本号相同版本号更高
    版本号可能不体现在文件名上(VC2019、VC2015可能都叫vc_redist.exe)。
    运行时会有版本号,或者文件的属性详细信息文件版本处。
  5. 安装/卸载/覆盖失败,处理见后。

注意,运行库虽然不算系统组件,不会导致系统故障,但可能被其他软件依赖使用,卸载后应及时安装,且一个一个卸载尝试。

  • 对SolidWorks子安装包。
    虽然可以从(如上)日志记录里、任务管理器里找到参数配置,从命令行手动调用,但难以手动进行整个安装流程,可能仅适合分离出来便于调试。
    最终应使用setup.exe安装。

异常故障处理:

  • 硬盘检查。
    貌似不多余。若系统未正常关闭,可能安全描述符异常,文件、文件夹链接、权限异常。
    运行 chkdsk /f /r ,下次开机后扫描,持续半小时左右。
  • 策略组。
  • 运行 gpedit
  • 检查项:
    [计算机配置|用户配置]管理模板Windows 组件Windows InstallerComputer Configuration -> Administrative Templates -> Windows Components -> Windows Installer)下的配置状态。
    默认均为未配置即可。
  • 批量检查:
    gpresult /h /f gpreport.html导出当前配置报告。查看是否有修改过。
  • 重置:
    • 方法1:运行 secedit /configure /cfg %windir%infdefltbase.inf /db defltbase.sdb /verbose
    • 方法2:删除目录 %WinDir%System32GroupPolicyUsers 、 %WinDir%System32GroupPolicy 。(可命令行 RD /S /Q <path> 执行)

更改后可 gpupdate /force 更新。

  • 注册表
    • 运行 regedit
    • 检查项:
      •  HKEY_CURRENT_USERSOFTWARE
        • eDrawings
        • (官方建议)如果安装了PDM,谨慎操作,仅可删除IM & SolidWorks SOLIDWORKS [版本]、. **
        • SOLIDWORKS 20XX
        • SolidWorks BackOffice
        • SRAC
        • MicrosoftVSTAHOST
        • MicrosoftVSTAHostConfig
      • HKEY_LOCAL_MACHINESOFTWARE **Wow6432Node适用于64位环境**
        • eDrawings
        • SolidWorks the IM & SOLIDWORKS [version] subkeys. **
        • SolidWorks Corporation
        • SRAC
        • (官方建议)如果安装了PDM,谨慎操作,仅可删除IM & SolidWorks SOLIDWORKS [版本]、. **
        • Wow6432NodeSolidWorks Corporation
        • Wow6432NodeMicrosoftVSTAHOST
        • Wow6432NodeMicrosoftVSTAHostConfig

以上为SolidWorks在注册表中的位置。
建议先导出,后更改(删除或者改名使失效)。

    • 更改项的权限:
      适用于(上述)报错:安装管理程序无法在此注册表位置生成注册表项: HKLMSoftwareWow6432NodeSolidWorks
      在上一级路径处右键菜单、任务栏菜单编辑中有权限
      当前用户(用户名)或其所在组有完全控制权限即可。
    • 重置注册表权限继承:
      下载SubInACL.exe,安装。运行如下脚本(保存为.bat):
      cd /d "%programfiles(x86)%Windows Resource KitsTools"
      subinacl /subkeyreg HKEY_LOCAL_MACHINE /grant=administrators=f /grant=system=f
      subinacl /subkeyreg HKEY_CURRENT_USER /grant=administrators=f /grant=system=f
      subinacl /subkeyreg HKEY_CLASSES_ROOT /grant=administrators=f /grant=system=f

      32位环境将第一行%programfiles(x86)%中的%86%去掉。
      时间可能半小时左右,随后建议手动重启电脑,可能导致关联软件重置(如默认浏览器)。

  • 用户账户权限(UAC)
    (Win10)开始菜单直接输入(而非运行) UAC 。
  • 用户组
    确保运行安装有管理权限即可。
    运行 netplwiz 可设置。
  • Windows 安全中心
    (Win10)开始菜单直接输入(而非运行) Windows 安全中心 。
    可能误删映像文件(.iso)。可以尝试临时关闭实时保护篡改保护
    其他杀毒软件建议都临时关了。
  • 开启日志记录
    运行 Msiexec.exe /i 安装包文件名.mis /log 记录名.txt 
  • 文件、文件夹权限
    • 方式1:程序 takeown , icacls 。
      如 "cmd.exe" /c takeown /f "C:XXX" /r /d y && icacls "C:XXX" /grant administrators:F /t 。
    • 方式2:(上面提及的)程序 SubInACL 。运行如下脚本(保存为.bat):
      cd /d "%programfiles(x86)%Windows Resource KitsTools"
      subinacl /subdirectories "C:Program Files"*.* /grant=administrators=f /grant=system=f
      subinacl /subdirectories %programfiles(x86)%*.* /grant=administrators=f /grant=system=f
      32位环境将%programfiles(x86)%行去掉/注释掉。萝卜L发于博客园

其他工具软件:

  • Windows Installer CleanUp Utility(msicuu2.exe
  • Microsoft Program Install and Uninstall.diagcab(MPIU)MicrosoftProgram_Install_and_Uninstall.meta.diagcab
  • Visual C++ Runtime Installer (All-In-One) v56AIO
  • Msiexec.exe
  • Process Monitor

要还不行建议分析日志记录,以及监控整个安装过程进行分析。
萝卜L发于博客园

后续:

  • 为什么没人写个自动清理注册表、文件夹的脚本呢,相关条目数量不多样;
  • 分析日志,监控安装过程还是有迹可循,费点时..

相关参考:(我的流水记录,无序,不分重要程度...到文末)萝卜L发于博客园

安装软件时无法将注册值写入注册表怎么解决
无法创建值,写入注册表时出错 - Microsoft Community
更改注册表项所有者权限,获取“完全控制”权限
如何修复Edge浏览器无法使用的错误:无法创建内容处理,错误代码:0x8027025b
错误5:WINDOWS 10中拒绝访问软件安装错误[完整指南] - 固定 - 2021
安装SOLIDWORKS 2017提示:前一个安装中的windows重启操作正在等待处理 ,怎么解_百度知道
如何恢复注册表系统默认的权限,问题具体详见
注册表的权限弄乱了,如何恢复到默认值?
设置访问权限的神器-------subinacl
SubInACL: A complete solution to configure security permission - TechNet Articles - United States (English) - TechNet Wiki
Microsoft Visual C++ 组件维护与卸载_0x80070005拒绝访问 - 知乎
如何删除并重新安装 Microsoft Visual C++ 运行库 | 搜索 | Autodesk Knowledge Network
Visual C++ Runtime Installer (All-In-One) v56
How to Fix Error Code 0x80070005 | expert-advice.org
C++ 2010 x86 系统策略禁止这个安装。请与系统管理员联系。 - Microsoft Community
How to troubleshoot Windows Installer errors
issue 32545: Unable to install Python 3.7.0a4 on Windows 10 - Error 0x80070643: Failed to install MSI package. - Python tracker
wix - Unable to Install : Error 0x80070643: Failed to install MSI package - Stack Overflow (replied)
MsiSystemRebootPending property - Win32 apps | Microsoft Docs
How to fix "Installation is forbidden by system policy" error - Microsoft Community
Enable MSI logging, and then read the .msi verbose log files
Elevated msiexec.exe uninstall from cmd failing
winapi - Windows 7 SDK installation failure - Stack Overflow
How to Turn off Windows Installer to Block MSI Package
注册表项HKEY_LOCAL_MACHINESoftwarePoliciesMicrosoftWindowsInstaller, DisableBrowse
Getting Error: This installation is forbidden by system policy. Contact your system administrator. - Advanced Installer (replied)
Error: 'Installation failed - MainEngineThread is returning 1625' when installing antivirus
process monitor Failed to execute MSI package"process monitor" "Failed to execute MSI package" - Google 搜索"process monitor" "0x80070659" - Google 搜索
Horizon Client or Agent Installation rolls back on Windows 10 with MMR installed as an option. (58543)
Process Monitor - Windows Sysinternals | Microsoft Docs
Unable to Install SQL Server Management Studio 2017, Fatal Error (0x80070643)
installation - SQL 17.5 SSMS Install Fails - Server Fault
Microsoft ASP.NET and Web Tools 2015 - Visual Studio 2015 Installation problem
10:15:39Defrag Tools: #3 - Process Monitor | Defrag Tools | Channel 9
windows - Registry virtualization failing - Stack Overflow
Q227181: How to Manage Windows Installer Local Policies | KnowledgeBase Archive
Complete SOLIDWORKS Clean Uninstall Guide | GoEngineer
注册表HKEY_CLASSES_ROOTInstallerProducts
solidworks安装问题:安装管理程序无法在此注册表位置生成注册表项: HKLMSoftwareWow6432NodeSolidWorks_机械师卡尔的博客-CSDN博客
安装管理程序在创建该注册表项时遇到错误 - 百度文库
SolidWorks常见安装失败及处理方法
注册表项HKLMSOFTWAREWow6432NodeMicrosoftVSTAHost|VSTAHostConfig
SolidWorks安装时出现各类错误的解决办法汇总-SOLIDWORKS...
Windows之权限讲解 - milantgh - 博客园
Win10安装visual c++2015 报错0x80070659 解决方法 -Win7系统之家
使用Windows命令行reg控制注册表键值 - QingSword.COM
CMD下读取/修改/删除注册表项的方法_DOS/BAT_脚本之家
[教學] 命令行下操作Windows註冊表(導入、導出)的技巧 @ 三文魚壽司電腦技術帖分享 :: 痞客邦 ::
solidworks安装显示可执行文件安装失败是怎么回事? - 知乎 (回复)

原文地址:https://www.cnblogs.com/RobertL/p/14260638.html