**常见技术问题:**
在SolidWorks 2020及后续版本中,PCB模块(即SolidWorks PCB或原自收购的CircuitWorks/SolidWorks PCB集成组件)常作为独立功能套件安装,但其安装项与主程序深度耦合,导致用户在“控制面板→程序和功能”中直接卸载时,系统常提示“将移除整个SolidWorks套件”或触发主程序修复/重装流程。更棘手的是,部分用户发现卸载后,Electrical、Routing或Simulation等其他专业模块出现功能缺失、许可证校验失败或启动报错(如“SWPCBAddIn.dll未注册”)。如何在不触发全局修复、不破坏已激活许可证、不干扰现有装配/电气协同工作流的前提下,安全、精准地仅移除PCB相关组件(含后台服务、注册表项、插件加载项及本地缓存),同时确保其余SW模块(如CAD、PDM、CAM)完全正常运行?
1条回答 默认 最新
玛勒隔壁的老王 2026-05-06 23:32关注```html一、常见技术问题深度解析
在SolidWorks 2020+版本中,PCB模块(含原CircuitWorks集成组件及独立部署的SolidWorks PCB)并非传统意义的“插件”,而是通过MSI安装包与主套件共享
SWCoreRuntime、SwAddInManager及统一许可证服务(SLM/SolidNetWork License Manager)。其注册表键值(如HKEY_LOCAL_MACHINE\SOFTWARE\SOLIDWORKS\AddIns\{A3E4D9F1-8C7D-4F2E-9B5A-3E1F8D6A0C7F})与Electrical模块共用同一GUID命名空间,导致控制面板卸载时触发Windows Installer的REINSTALLMODE=vomus策略回滚——这是“误删全量套件”的根本成因。二、故障链路建模(Mermaid流程图)
flowchart TD A[用户点击“卸载SolidWorks PCB”] --> B{Windows Installer检测到
PCB组件依赖主运行时} B -->|是| C[触发REINSTALL=ALL策略] C --> D[重建SWCoreRuntime.dll全局注册] D --> E[覆盖Electrical模块的AddInManifest.xml] E --> F[启动时加载失败:SWPCBAddIn.dll未注册] B -->|否| G[静默跳过,实际未卸载]三、精准卸载四维矩阵
维度 关键对象 安全移除方式 风险规避要点 文件层 %ProgramFiles%\SolidWorks Corp\PCB\%APPDATA%\SOLIDWORKS\PCB\手动删除目录 + 清空 Temp\SWPCB_*缓存禁止删除 Shared子目录下的SwPCBCommon.dll(被Routing复用)注册表层 HKEY_CURRENT_USER\Software\SOLIDWORKS\AddIns\SWPCB*HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\SOLIDWORKS\PCB导出备份后,仅删除含“PCB”“CircuitWorks”字样的键值 保留 Electrical\AddInEnabled=1等跨模块键值四、许可证与服务级隔离方案
- 许可证解耦:运行
swlicmgr.exe -remove pcb(需管理员权限),该命令调用SLM API仅注销PCB Feature ID(FID=128),不影响FID=1(CAD)、FID=32(PDM) - 服务终止:执行
sc delete "SolidWorksPCBService",并确认services.msc中无残留服务项 - 插件热禁用:编辑
%APPDATA%\SOLIDWORKS\SOLIDWORKS 202X\swbrowser.cfg,注释掉SWPCBAddIn=1行,避免启动时DLL加载 - 装配协同保护:保留
%ProgramFiles%\SolidWorks Corp\Electrical\Importers\PCBImport.dll(用于ECAD-MCAD双向引用),仅禁用其自动加载
五、验证清单与回归测试脚本
执行以下PowerShell脚本完成自动化验证(兼容Win10/11 + SW2020–2024):
$checks = @( @{Test="PCB服务已停用"; Cmd="Get-Service 'SolidWorksPCB*' -ErrorAction SilentlyContinue | ForEach-Object {$_.Status}" ; Expect=""}, @{Test="许可证状态正常"; Cmd="& '$env:ProgramFiles\SOLIDWORKS Corp\SOLIDWORKS\swlicmgr.exe' -status | Select-String 'Feature.*128.*Not Licensed'" ; Expect="True"}, @{Test="CAD模块可启动"; Cmd="Start-Process 'sldworks.exe' -ArgumentList '-noquickstart' -WindowStyle Hidden -PassThru | Wait-Process -Timeout 30 -ErrorAction SilentlyContinue"; Expect="NoException"} ) $checks | ForEach-Object { try { $r = Invoke-Expression $_.Cmd; $status = if($r -match $_.Expect){"✅"}else{"❌"} } catch { $status = "❌" } Write-Host "$($_.Test): $status" }六、企业级部署建议(面向IT运维)
- 使用
msiexec /x {ProductCode} REMOVE=PCB ADDLOCAL=ALL替代控制面板卸载(需提前通过Orca.exe提取PCB组件Code) - 为PDM用户配置
FileVault白名单规则,禁止*.pcbdoc检入,从源头阻断PCB工作流 - 在SCCM/Intune中部署注册表策略模板(ADMX),锁定
HKEY_LOCAL_MACHINE\SOFTWARE\SOLIDWORKS\AddIns\下非PCB键值的写权限
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报- 许可证解耦:运行