RobotStudio 启动 OmniCore FlexPendant 报“无效的注册表值”并出现“Login to Controller Failed” 的解决记录
一、问题现象
我在 RobotStudio 中启动 OmniCore FlexPendant 时,先后遇到了两个问题。
问题 1:点击 OmniCore FlexPendant 直接报错
报错内容类似:
RobotStudio .NET exception: 无效的注册表值
Base exception: Win32Exception
无效的注册表值
在 System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
在 System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
在 RobotStudio.UI.Packages.VNextInstaller.<InstallVNext>d__4.MoveNext()
...
在 RobotStudio.UI.Controller.Commands.LaunchVNext.<ExecuteAsync>d__1.MoveNext()
也就是说,RobotStudio 在启动 FlexPendant 时,调用 Windows 外部启动链路失败了。
问题 2:报错解决后,又出现登录失败
后面修复了第一个问题,FlexPendant 能打开了,但又出现:
Login to Controller Failed
Please check whether the controller is ready to accept a connection and try to login again.
而且这个问题有两个特点:
-
当前控制器已经启动并变绿
-
新建一个全新的 RW 7.21 虚拟控制器,依然如此
说明这已经不是单个工程的问题了。
二、核心结论先说
这次其实是 两个问题叠加:
第一个问题
Windows 对 .appx 的打开链路异常,导致 RobotStudio 一点击 OmniCore FlexPendant 就报:
无效的注册表值
第二个问题
.appx 启动恢复后,ABB FlexPendant 这个 UWP 应用没有放通 loopback,导致它无法连接本机虚拟控制器,于是出现:
Login to Controller Failed
三、排查过程
1. 先确认 App Installer 是否存在
用 PowerShell 查询:
Get-AppxPackage *DesktopAppInstaller*
我的结果里能看到:
Name : Microsoft.DesktopAppInstaller
Version : 1.28.220.0
Status : Ok
说明系统里确实装了微软官方的 App Installer。
2. 验证 ms-appinstaller: 协议是否正常
try {
Start-Process "ms-appinstaller:"
"ms-appinstaller 协议调用:成功发起"
} catch {
"ms-appinstaller 协议调用失败:$($_.Exception.Message)"
}
结果是可以成功发起。
这说明不是协议本身彻底坏掉。
3. 直接测试 ABB 的 .appx 能否被系统打开
FlexPendant 对应的包路径如下:
$fp = "C:\Users\byy\AppData\Local\ABB\RobotWare\FlexPendant\Apps_1.22.0\appx\ABB.Robotics.Apps.Shell_1.22.0.452_x64.appx"
直接测试:
try {
Start-Process $fp
"直接打开 ABB 的 .appx:成功发起"
} catch {
"直接打开 ABB 的 .appx:失败 -> $($_.Exception.Message)"
}
结果报错:
This command cannot be run due to the error: Invalid value for registry.
这一步很关键,说明:
不是 RobotStudio 自己单独坏了,而是 Windows 处理
.appx文件时就已经出问题了。
4. 再验证 ABB 的 .appx 包本身有没有坏
绕过 Start-Process,直接安装这个 .appx:
Add-AppxPackage -Path $fp -ForceApplicationShutdown -Verbose
这一步可以成功。
说明:
-
ABB 这个
.appx包本身没坏 -
问题出在 Windows 打开
.appx的链路 -
RobotStudio 正好依赖了这条链路,所以才报“无效的注册表值”
四、第一个问题的解决方法
既然是系统处理 .appx 的链路坏了,那就修系统组件。
执行:
sfc /scannow
DISM /Online /Cleanup-Image /RestoreHealth
我的执行结果是:
-
sfc /scannow提示找到了损坏文件并成功修复 -
DISM /RestoreHealth成功完成
然后重启电脑。
重启后再次执行:
Start-Process $fp
这次已经不再报:
Invalid value for registry
而是能正常弹出 ABB FlexPendant 的安装/启动界面。
说明
到这里,第一个问题已经解决:
Windows 对
.appx的 Shell 打开链路恢复正常。
五、第二个问题:为什么还是 “Login to Controller Failed”?
虽然 .appx 能打开了,但 FlexPendant 仍然无法登录控制器。
一开始我怀疑是:
-
控制器没完全 ready
-
启动太快
-
当前 VC 有问题
所以我做了这些测试:
-
等控制器变绿后再点
-
多等一会儿再点
-
新建一个全新的 RW 7.21 虚拟控制器再测试
结果都一样,还是:
Login to Controller Failed
这说明:
问题不在某个控制器工程,而在 FlexPendant 到本机 VC 的通信链路。
六、真正导致 Login Failed 的原因
后面排查发现,ABB Robotics FlexPendant 是一个 UWP / AppContainer 应用。
这种应用要访问本机 localhost 服务时,通常需要放开 loopback。
而虚拟控制器正是运行在本机,所以如果 loopback 没放通,就会出现这种现象:
-
应用能打开
-
但始终登录不到本机控制器
七、第二个问题的解决方法
1. 先确认 FlexPendant 包已经安装
Get-AppxPackage *FlexPendant* | Format-List Name, PackageFullName, PackageFamilyName, InstallLocation
结果类似:
Name : ABBRobotics.FlexPendant
PackageFullName : ABBRobotics.FlexPendant_1.22.0.452_x64__v6d5zyx203t42
PackageFamilyName : ABBRobotics.FlexPendant_v6d5zyx203t42
2. 查 AppContainer 的 SID
Get-ChildItem "HKCU:\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Mappings" |
ForEach-Object {
$p = Get-ItemProperty $_.PSPath -ErrorAction SilentlyContinue
if ($p.Moniker -like "*ABBRobotics.FlexPendant*") {
[pscustomobject]@{
SID = $_.PSChildName
Moniker = $p.Moniker
DisplayName = $p.DisplayName
}
}
}
我这里查到的 SID 是:
S-1-15-2-3646210811-1003242304-747625828-2040334373-3821629615-1507261120-3678927528
3. 给 ABB FlexPendant 加 loopback 例外
执行:
CheckNetIsolation LoopbackExempt -a -p=S-1-15-2-3646210811-1003242304-747625828-2040334373-3821629615-1507261120-3678927528
然后检查是否添加成功:
CheckNetIsolation LoopbackExempt -s
只要输出里能看到类似:
abbrobotics.flexpendant_v6d5zyx203t42
就说明加成功了。
八、最终操作顺序
我最后是按这个顺序彻底解决的:
第一步:修复 Windows 组件
sfc /scannow
DISM /Online /Cleanup-Image /RestoreHealth
第二步:重启电脑
第三步:确认 .appx 已经能正常打开
Start-Process $fp
第四步:给 FlexPendant 加 loopback 例外
CheckNetIsolation LoopbackExempt -a -p=你的SID
第五步:关闭 FlexPendant 和 RobotStudio,再重新打开
第六步:启动 RW 7.21 虚拟控制器,等待变绿,再点 OmniCore FlexPendant
最终恢复正常,可以直接进入使用。
九、最终总结
这次问题表面看起来像一个问题,实际上是两个问题串在一起:
问题一:.appx 启动链路损坏
表现为:
-
RobotStudio 点 OmniCore FlexPendant 报
无效的注册表值 -
Start-Process xxx.appx同样报错 -
但
Add-AppxPackage -Path xxx.appx可以成功
解决方法:
sfc /scannow
DISM /Online /Cleanup-Image /RestoreHealth
问题二:FlexPendant 无法连接本机虚拟控制器
表现为:
-
FlexPendant 能打开
-
但一直
Login to Controller Failed -
当前 VC、新建 VC 都一样
解决方法:
CheckNetIsolation LoopbackExempt -a -p=<FlexPendant 对应 SID>
十、最后附上本次真正用到的关键命令
Get-AppxPackage *DesktopAppInstaller*
try {
Start-Process "ms-appinstaller:"
"ms-appinstaller 协议调用:成功发起"
} catch {
"ms-appinstaller 协议调用失败:$($_.Exception.Message)"
}
$fp = "C:\Users\byy\AppData\Local\ABB\RobotWare\FlexPendant\Apps_1.22.0\appx\ABB.Robotics.Apps.Shell_1.22.0.452_x64.appx"
Start-Process $fp
Add-AppxPackage -Path $fp -ForceApplicationShutdown -Verbose
sfc /scannow
DISM /Online /Cleanup-Image /RestoreHealth
Get-AppxPackage *FlexPendant* | Format-List Name, PackageFullName, PackageFamilyName, InstallLocation
Get-ChildItem "HKCU:\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Mappings" |
ForEach-Object {
$p = Get-ItemProperty $_.PSPath -ErrorAction SilentlyContinue
if ($p.Moniker -like "*ABBRobotics.FlexPendant*") {
[pscustomobject]@{
SID = $_.PSChildName
Moniker = $p.Moniker
DisplayName = $p.DisplayName
}
}
}
CheckNetIsolation LoopbackExempt -a -p=S-1-15-2-3646210811-1003242304-747625828-2040334373-3821629615-1507261120-3678927528
CheckNetIsolation LoopbackExempt -s
十一、总结
RobotStudio 启动 OmniCore FlexPendant 报“无效的注册表值”,本质上是 Windows 的
.appx打开链路异常;修好后如果又出现Login to Controller Failed,大概率还需要给 ABB FlexPendant 放开 loopback,两个问题往往是连续出现的。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)