每次打开SolidWorks,电脑先弹一个“Windows正在配置 SOLIDWORKS”的窗口,转圈、卡住、闪一下,点取消才能继续。这个现象在公司设计岗和学校里都太常见了,多数人的第一反应是重装SolidWorks,结果装到一半又报“内部错误”或者“无法获得下列许可”,反复折腾一整天。问题根源基本不是软件本身,而是Windows Installer把SolidWorks的安装状态记录成了一个残缺的MSI包,注册表里也留着卸载工具没清干净的条目。于是启动软件时触发“修复”,重装时又被旧注册表信息拦截,形成死循环。这篇文章围绕这个死循环展开,从触发原理、注册表残留定位、安全清理、重装避坑到事后排查,按照我实际处理过的路径一步步讲,适合被弹窗烦了许久的SolidWorks用户,也适合第一次安装前先读一遍的新手。
1. 弹窗到底从哪来:先搞懂“正在配置”的触发机制
1.1 MSI的配置逻辑:为什么系统非要弹窗修复
SolidWorks这种大型工业软件,绝大多数版本走的都是Windows Installer通道,也就是通过MSI包来安装、修复、卸载。Windows Installer不像普通绿色软件那样只是往磁盘丢文件,它会在系统内部维护一套“安装数据库”,记录产品装没装、装到哪一步、哪些组件需要验证、哪些文件在哪个路径。只要数据库认为软件的组件没有达到“完整安装”状态,下一次运行软件入口时,系统就会自动拉起一段配置流程,试图把缺失的部分补上。
这个“正在配置SOLIDWORKS”弹窗,本质就是MSI在后台做完整性校验和修复。我见过很多人在这里点“取消”后软件还能打开,就觉得没事了。但只要你继续用,过一段时间它会再弹,因为数据库里那个“待修复”标记一直没消除。更麻烦的是,如果启动时不小心点了窗口里的“安装”按钮,而安装源又找不到,弹窗会变成“错误1722”或者直接卡死在转圈状态。
之所以SolidWorks比其他软件更容易触发这个问题,是因为它组件太多,一个版本里往往包含主程序、Simulation、Plastics、Toolbox、Visualize等十几个模块。安装管理器会把每个模块分别打包成MSI,再依次安装。任何一个模块安装中断、杀毒软件拦截、用户权限不足,都可能导致整体安装状态不一致。而这些状态在注册表里都是有记录的,卸载时只要有一个模块没卸干净,残留的状态就会让系统以为“还有东西没配完”。
1.2 注册表残留的常见来源:卸载不彻底是主因
注册表残留并不是一种玄学,它是有明确来源的。最典型的情况是上面说的多模块安装,用户卸载时只删了主程序,或者在卸载界面里只勾选了“SOLIDWORKS主程序”,把Simulation、Toolbox这些组件留在了系统里。这些组件在“程序和功能”里可能还显示着,也可能卸载过程中进程被杀掉后彻底卡在中间状态。
第二种常见来源是第三方卸载工具。很多人觉得系统自带的卸载不干净,就直接用某某管家、某某清理助手“强力卸载”。这类工具的逻辑通常是先扫描软件目录,再尝试删除注册表项,但它们的判断依据是“这个路径有没有值”“这个键像不像垃圾”。一台电脑里同时装了SolidWorks和Office,这类工具很容易误伤Windows Installer数据库里的公共键值。我在实际处理中见过不少机器,原本只是SolidWorks有问题,用第三方工具清完以后,Office、Visual C++运行库、甚至Adobe家的软件也一起弹“配置窗口”。这就是因为Installer数据库被无差别清理了。
第三种来源是安装中断。比如安装到一半笔记本电池耗尽,或者用户看到进度条不动就强制关机,又或者杀毒软件在后台隔离了某个刚生成的exe、dll文件。这些中断会让MSI事务没有提交完成,注册表里可能只有半个条目。这半个条目不会让软件正常用,但会阻碍下一次安装,因为安装器认为“产品已经存在”。
1.3 自检:你的问题属于哪一种场景
动手清理注册表之前,我建议你先判断自己属于哪种场景,因为不同场景的处理路径差别很大,一上来就乱删容易把还能用的系统弄坏。
- 软件还能打开,就是启动时总弹“正在配置”:优先尝试“修复安装”,不用卸载,更不用删注册表。
- 卸载之后想重装,但重装老失败:这种情况注册表残留概率很高,需要按完整流程清理。
- 电脑什么都没动,突然某天弹“正在配置”,而且最近装过Windows更新或显卡驱动:多半是运行库或系统组件被更新改动,优先查事件日志里的相关记录。
- 弹窗提示文字里写的是“Microsoft Visual C++ 2015-2022”而不是SolidWorks本身:问题出在VC++运行库,不用去动SolidWorks的注册表。
先花三分钟做这个判断,能帮你省掉后面大量无用操作。我自己的习惯是遇到弹窗先看标题栏,标题里明确带着“SOLIDWORKS”的才是主程序问题;如果是其他组件,就要单独处理。
2. 动手清理前先做两手准备:备份、卸载顺序和官方工具
2.1 备份不能省:还原点加注册表导出
清理注册表之前如果不做备份,等于没系安全带跑山路。注册表清理的失误不一定是马上炸,可能过几天你装某个其他软件时才突然发现少了一个共用键值。我处理过的最典型例子,是有人为了清SolidWorks残留,把HKLM\SOFTWARE\Classes\Installer\Products下面的项删了一排,结果所有装过的软件都没法正常卸载了,新装软件也报错,最后只能靠系统还原救回来。
所以要做的第一件事是创建系统还原点。Win+R输入sysdm.cpl,切到“系统保护”,选中系统盘,点“创建”,起个名字比如“before-solidworks-clean”,等它完成。这个过程一般一两分钟,但给后面留了后悔药。
第二件事是导出注册表分支。不需要全量导出,全量导出文件太大而且恢复麻烦。我通常只导出三个位置:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall、HKLM\SOFTWARE\Classes\Installer\Products、HKLM\SOFTWARE\SolidWorks。在regedit里分别选中这些节点,右键“导出”,保存成.reg文件。后面如果删错了,双击导入就能恢复。注意,Installer\Products下面的项都是用GUID命名的,看起来一团乱码,桶里经常混着几十个软件的安装状态,所以在导出和删除时要格外小心,只针对能确认和SolidWorks相关的项操作。
2.2 卸载顺序:先把还能卸载的组件卸完
如果你确定要走到“彻底卸载重新安装”这一步,顺序非常关键。正确顺序是:先通过“设置-应用-已安装的应用”或控制面板里的“程序和功能”卸载SolidWorks主程序,然后再卸载SIMULATION等相关模块,最后再处理注册表。千万不能反过来,注册表项都删了以后再回头控制面板卸载,那时候系统已经不认你了,只能手动清理,还容易误操作。
卸载的时候有几个小细节。第一,先退出所有SolidWorks相关进程,包括右下角的各种Background Downloader、更新调度器,这些后台进程会锁住文件,卸载程序写注册表的时候也会失败。第二,如果卸载界面里让你选择“保留用户文件还是全部删除”,一般选“全部删除,包括证书和许可信息”,因为目标是干净重装。第三,卸载完成后立刻重启一次,别急着清理注册表。重启后,某些在卸载过程中“挂起”的注册表操作才会真正提交或释放。
2.3 官方清理工具:SolidWorks Clean Uninstall Utility怎么用
SolidWorks安装包里通常带着一个叫“SOLIDWORKS Clean Uninstall Utility”的小工具,安装光盘或安装镜像的\sldim\目录下能找到,不一定在根目录。这个工具可以扫描本机所有SolidWorks系列组件的安装痕迹,把主程序、附加模块、对应服务项和一些注册表键一起清掉。它的价值在于比手动清理全面,而且知道哪些键是SolidWorks自己创建的,不会像第三方工具那样乱删公共项。
不过它不是万能的。我在实际使用中发现,它在处理MSI数据库残留的时候依然有盲区,尤其是那些安装事务本身没提交的“半吊子”条目。所以官方工具跑完后,还要手动检查一遍HKCU\SOFTWARE\SolidWorks和HKLM\SOFTWARE\SolidWorks这两个节点是否存在。不管官方工具报告“清理完成”还是“未发现残留”,我都会亲手去注册表里再查一次,这是我这几年养成的习惯,也是每次清理都能一次成功的关键。
顺带提一个过时的东西:以前有个“Windows Installer CleanUp Utility”,微软已经停止支持好几年了。很多教程还在让人下载,但那个工具在Win10和Win11上会导致部分软件卸载列表错乱,强烈不建议再用。遇到顽固的MSI残留,用系统自带的msiexec和官方工具组合,比找第三方小工具可靠得多。
3. 注册表清理实操:从定位到删除的完整路径
3.1 先查产品代码:别在Installer数据库里乱翻
注册表里最容易出问题的区域就是HKLM\SOFTWARE\Classes\Installer\Products,这里每个子项代表一个已安装产品的MSI状态。问题在于子项名是GUID的变形写法,不显示软件名称,普通用户根本看不出哪个对应SolidWorks。如果你直接在这里面一个个翻,或者靠“感觉”删项,很大概率会误删Office、ANSYS、Adobe等产品的MSI状态,后果就是它们也开始弹“正在配置”。
正确的做法是先查产品代码。在HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall和HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall里,每个子项都有DisplayName,可以看到软件全名。用PowerShell可以很快捞出来:
Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*" | Where-Object { $_.DisplayName -like "*SOLIDWORKS*" } | Select-Object DisplayName, PSChildName, InstallLocation把输出里的PSChildName记下来,那串GUID就是产品代码。如果你的是32位组件,还要查一下WOW6432Node那个节点,命令类似,路径改一下就行。有了这串代码,后面不管是强制运行msiexec卸载,还是在Installer\Products里定位,都有据可依。
3.2 我推荐的清理策略:按三个优先级分区处理
拿到产品代码后,手动清理注册表按下面的顺序来,每个区域的风险等级不同,处理方法也不同。
第一优先清理的是HKLM\SOFTWARE\SolidWorks和HKCU\SOFTWARE\SolidWorks。这两个节点是SolidWorks自己的软件配置区,删掉不会影响其他软件。如果只是想解决“已安装列表里没有SolidWorks但注册表还残留”,这个区域先看。删除前可以在regedit里按Ctrl+F搜“SolidWorks”,把搜索到的相关项单独导出,再删除。
第二优先是卸载入口残留:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall下的残留项。正常情况下,卸载完的程序会自动从这个节点消失。如果还在,说明卸载程序没有清理干净。这里需要确认DisplayName确实是SolidWorks相关,再右键删除整个子项。不要删除了才发现那个是别的软件的卸载入口。
第三优先才是Installer数据库。这一步麻烦且危险。你刚才查到产品代码后,不要直接搜索这个GUID在注册表里的位置,因为Installer\Products的子项名是GUID经过反转和变形后的结果。更稳妥的方式是在regedit里定位到HKLM\SOFTWARE\Classes\Installer\Products,鼠标点中顶层节点,按Ctrl+F输入“SOLIDWORKS”,勾选“项”和“全字匹配”,逐个查看搜索结果,确认项里包含SolidWorks信息后再删除。这个区域我只建议删除明确带SolidWorks字样的项,不要在搜索“Dassault”或“SW”这类模糊关键词后批量删。
3.3 用msiexec和reg命令做强制清理
对于特别顽固、显示卸载不掉的MSI残留,可以先用管理员身份打开命令行,尝试强制卸载:
msiexec /x {上面查到的产品代码} /qn /l*v C:\temp\solidworks_uninstall.log这里的{产品代码}要带花括号,/qn表示静默模式不弹界面,/l*v会把详细日志写到指定路径。如果命令成功执行完,说明Windows Installer数据库里这个产品的条目被正常移除,后续注册表清理只需要处理软件自己的配置键就行。如果提示“此操作仅对当前已安装的产品有效”,说明系统已经认为该产品未安装,但注册表里还有垃圾,这时候就要靠reg命令删除残留键。
举两个常用命令:
reg query "HKLM\SOFTWARE\SolidWorks" /s reg delete "HKLM\SOFTWARE\SolidWorks" /freg query用来确认路径下的内容,reg delete加/f表示不询问直接删。我习惯先query再delete,防止手滑删错路径。整个手动清理过程里,我给自己定了一个单调规则:一次只处理一个路径,删完一个就回控制面板“程序和功能”刷新一次,不要一次性删了一堆再回来看结果。
3.4 磁盘残留也要处理:这里有一个不能碰的禁区
注册表清完,磁盘上通常还有几个SolidWorks目录。常见位置是C:\Program Files\SOLIDWORKS Corp、C:\ProgramData\SolidWorks、C:\Users\你的用户名\AppData\Roaming\SolidWorks、C:\Users\你的用户名\AppData\Local\SolidWorks。如果确定不保留任何模板、宏、自定义设置,这些都可以手动删除。但强烈建议在删除之前,把C:\ProgramData\SolidWorks下的设计库、自定义属性模板、材质库备份一下,因为这些都是干活时一点一点攒出来的,重装后重建很费劲。
有一个禁区千万别碰:C:\Windows\Installer目录。这个目录里保存着系统所有MSI安装包的缓存文件,包括SolidWorks的,也包括Office、驱动和其他软件。很多人在网上看到“清理installer缓存释放磁盘空间”的教程,跟着做,结果SolidWorks弹窗问题不但没解决,Office、Cadence、Ansys软件全部跟着一起出问题。C:\Windows\Installer里的缓存文件是为了让系统能进行修复、卸载、补丁更新,删除后MSI数据库就失去了文件源,弹窗、修复失败、卸载失败都会来。所以我的原则是:可以删Program Files和ProgramData里的SolidWorks目录,但绝不手动清理C:\Windows\Installer。
4. 重新安装:做完这一步才算真正收尾
4.1 重装前的检查清单:每一项都别跳过
注册表和磁盘残留清理完成后,先别急着双击安装包。我处理过很多次“装了第三次还失败”的案例,最后发现是没重启系统,或者安装目录带空格和中文,又或者杀毒软件还开着。重装前先过一遍清单:
- 系统已重启过一次,确保卸载和注册表清理的改动生效;
- 注册表里按Ctrl+F搜“SOLIDWORKS”,确认自定义配置键已清掉(搜到系统临时键没关系,但不应搜到明显的安装状态项);
- 杀毒软件和Windows Defender的实时保护暂时关闭,或者把整个安装镜像目录加入白名单;
- 磁盘剩余空间足够,完整安装建议预留至少30GB,启用Toolbox和Simulation还要更大;
- 电源选项设置为“从不睡眠”,防止安装到一半系统休眠;
- 确认当前Windows账户是管理员,安装时右键安装器选择“以管理员身份运行”。
这些检查看似琐碎,但每一条都在真实环境里触发过问题。尤其“从不睡眠”这条,我自己就遇到过装SolidWorks时人走开,笔记本自动睡眠,醒来后安装进程被挂起,注册表里又留下“Installing”状态,回到弹窗死循环。
4.2 用安装管理器按正常流程装:别图省事跳过组件
SolidWorks的安装推荐走官方Installation Manager,选择“在此计算机上安装”,手动勾选需要组件。这里有个经验之谈:模块宁可少装,也别装杂。很多人安装时把Simulation、Plastics、Motion全部勾上,结果用到的永远只有基础建模和装配。组件越多,注册表里的MSI状态越复杂,将来出问题的概率越高。如果你只需要基础功能,就只装SOLIDWORKS主体,其他模块需要时再添加。
另一个容易被忽略的点是安装包装在哪个目录。有中文或者特殊字符的路径会导致部分DLL注册失败,这属于最基础但也最常见的坑。另外安装过程中如果弹出“需要重启计算机”的提示,建议点重启后再继续,不要点“稍后重启”。因为很多MSI组件注册事务在重启后才能完成提交,不重启的话,安装程序可能误判状态。
4.3 装完还弹“正在配置”,往这三个方向查
重装完成后,如果启动软件时依然弹出“Windows正在配置”,先不要怀疑“是不是又没卸干净”。我建议按顺序检查三个方向。
第一个方向是看弹窗的标题文字。如果写的是“Microsoft Visual C++”或者“待定运行时”,打开“控制面板-程序和功能”,找到Microsoft Visual C++ 2015-2022 Redistributable系列,右键选择“更改”,执行修复。SolidWorks重度依赖VC++运行库,而运行库本身也是MSI,它一旦状态错乱,就会借SolidWorks的启动过程反复弹窗。
第二个方向是看Windows事件查看器。Win+R输入eventvwr.msc,展开“Windows日志-应用程序”,找来源为“MsiInstaller”的错误事件。事件详情里会带产品代码和具体的错误码,比如“1722”“2755”之类。有了错误码再去查对应含义,比瞎猜高效得多。这个方向尤其适合“重装后第一次能打开,第二次开始弹窗”的间歇性问题。
第三个方向是许可相关。如果弹窗之后的报错是“无法获得下列许可SOLIDWORKS Standard”,这已经不是安装问题,而是许可服务或激活信息没配对。可以到“服务”里检查FlexNet Licensing Service是否处于启动状态,再看看系统时间是否准确,最后再用安装管理器里的许可选项重新激活一次。顺序不要乱,先查服务、再查时间、最后重新激活。
5. 常见问题速查与避坑实录
5.1 一张速查表解决大半问题
以下这张表是我处理过的问题里最常见几种的汇总,按“现象-常见原因-优先处理方式”列出来,遇到新的弹窗时可以快速对照。
| 现象 | 常见原因 | 优先处理方式 |
|---|---|---|
| 每次启动SolidWorks都弹“正在配置” | MSI安装状态损坏或注册表残留 | 先点取消,从“程序和功能”执行修复,不行再走完整清理重装 |
| 卸载后“已安装的应用”里仍有SolidWorks | Uninstall节点有残留键 | 导出该键后删除,再重启验证 |
| 重装时提示“另一个安装正在进行” | msiexec进程挂起 | 任务管理器结束msiexec.exe,清理C:\Windows\Installer下的临时文件,重启后再装 |
| 重装过程中段报“内部错误” | 旧版本卸载不彻底 | 用官方Clean Uninstall Utility清理,再手动检查注册表 |
| 弹窗提示找不到某个.msi文件 | Installer缓存被清理或丢失 | 不要手动去别处复制缓存,重装对应组件让系统重建缓存 |
| 软件能启动,但报许可错误 | 许可服务未启动或授权信息损坏 | 检查FlexNet服务,确认系统时间,重新激活许可证 |
| 启动时弹“无法启动硬件设备” | 设备驱动或PCI设备状态异常 | 到设备管理器查看具体设备错误码,与SolidWorks安装无直接关系 |
表格里需要特别强调的是“另一个安装正在进行”这条。很多人第一反应是重试,但正确的做法是结束所有msiexec进程,清理安装目录下的临时文件,然后重启。如果不重启,即使进程被结束,Windows Installer锁定的数据库状态也可能还挂在内存里没释放。
5.2 几个我踩过的坑和教训
第一个教训是关于第三方注册表清理工具的。多年前我还是新人的时候,遇到SolidWorks弹配置窗口,第一反应是用某第三方工具扫“无效注册表项”。扫出来的结果里有一大堆Installer相关的项,我直接勾选清理了。结果SolidWorks问题没解决,第二天用户反馈Office打不开了,所有Office组件启动都弹“正在配置”。后来排查才知道,第三方工具把Office的MSI数据库缓存标记成了“无效”。那次之后我再没有用过任何“一键清理注册表”工具处理这个问题,一律用系统和官方渠道。
第二个教训是卸载的时候图省事,只卸载主程序,不卸Toolbox和Simulation模块。当时觉得这两个用不上,卸载完了重装。结果重装时安装管理器检测到“已有组件存在”,反复提示无法继续。我最后把注册表里所有和Dassault、SolidWorks相关的项全部导出、审查、删除,才算解决问题。从那以后每次卸载我都先把“程序和功能”里的所有SolidWorks关联项目全部列出来,一个个卸干净再进入注册表环节。
第三个踩过的坑是和C:\Windows\Installer有关的。有一回为了腾磁盘空间,我清理了这个目录下的补丁文件,想当然地认为老版本安装包没用。过了几天SolidWorks弹配置窗口,错误日志指向某个老版本的.msi缓存文件,而这个文件正好被我删了。系统想修复却找不到源文件,卡在一个非常尴尬的状态。最后我又重新下载了完整安装包,运行“修复”才恢复。这件事让我彻底记住了,缓存目录的事尽量别碰。
5.3 长期维护建议:让电脑不再容易陷入弹窗循环
最后还是想分享几个长期维护的心得。SolidWorks在日常使用中会不断在注册表里写入用户配置、最近文件列表、许可信息,这些是正常的。但如果你发现电脑越来越频繁地弹配置窗口,不妨检查一下最近有没有安装过大型更新或卸载过其他工业软件。很多时候SolidWorks弹窗是被“邻居”影响的,比如卸载某个CAD软件时误伤了公用运行库。
经常有人问我,要不要定期清理注册表。我的答案是不建议主动去清,除非你已经明确知道某个软件卸载不干净,并且做好了备份。系统注册表在Windows的架构里承担的不只是“配置存放”这么简单,它还关联着MSI安装状态、组件服务、设备驱动、用户权限。在动手之前,把“备份”这两个字刻在脑子里,能帮你避开绝大多数更严重的问题。
另外一个小习惯:SolidWorks的安装镜像和安装管理器版本尽量保留在本地。每次安装后安装管理器会下载大量组件到临时目录,装完以后这些临时文件会消失。保留一份完整的安装镜像,哪天需要修复,就不用花大把时间重新下载。同时,这也意味着即便C:\Windows\Installer里的缓存出问题,你还有一条“手动指定安装源”的路径可以走。
我在实际处理中的体会是,“Windows正在配置SOLIDWORKS”这个弹窗,本身不可怕,可怕的是在不知道原理的情况下乱操作。备份、卸载、定位、清理、重装、验证,这六个步骤里,每一步都在降低后面步骤的出错概率。只要按照顺序来,弹窗问题通常一次就能解决。希望这次分享的过程和细节,能帮你省下跟这个转圈窗口缠斗的时间。