在 Windows 10 上,以下命令可以完美运行:
netsh mbn show read interface = *
然后,此命令会显示平板电脑中当前 SIM 卡的详细信息:状态、紧急模式(开或关)、用户 ID、SIM ICC ID 和电话号码。
就这个问题而言,假设始终只有 1 张 SIM 卡,而不会多于 1 张 - 我不确定安装多张 SIM 卡是否会导致列出所有 SIM 卡的详细信息。
我们特别需要知道 SIM ICC Id。
上述命令已在多台联想 D330 和联想 Duet i3 Windows 10 平板电脑上测试,并且运行完美 - 只需一些额外的参数就可以自动提取 ICC Id,这正是我们需要做的。
然而,在运行 Windows 11 的同款平板电脑型号上,该命令的运行结果为:
Failed to access the interface: error 0x32.
每个运行 Windows 11 的设备都会出现同样的错误。
此命令在 Windows 11 上不起作用的原因是什么?或者也许我错过了需要启用/禁用的设置才能使其工作?
有没有其他方法可以通过命令行获取 ICC Id?
LTE 驱动程序已重新安装两次,蜂窝选项肯定已启用,SIM 卡肯定存在且功能正常,我正在寻找的所有详细信息都可以在“设置”>“网络和 Internet”>“移动”>“运营商设置”>“属性”中正常找到;只是在 Win11 上无法使用与 Win10 上相同的命令显示
最终目标是能够从 C# 应用程序中获取 ICC Id,这就是为什么它需要命令行而不是通过 Windows GUI。
答案1
不知道为什么我之前没有想到这一点,但我似乎能够从注册表中获得我需要的东西。我使用注册表编辑器中的“查找”功能,搜索从 Windows GUI 获得的 SIM ICC。经过几个可能的密钥后,我找到了一个似乎只列出当前存在的 SIM 卡的 ICC ID 的密钥。
在Computer\HKLM\SOFTWARE\Microsoft\Multivariant\UI\Candidates\UICC\
有一个以 SIM ICC 命名的单个子项。我可以读取候选项并获取子项,这些子项将返回当前存在的 1 个子项的名称,即 SIM ICC。如果我将 SIM 换成另一个并运行相同的函数,我将获得新 SIM 卡的 ICC,而没有其他子项,这表明旧条目已被删除/重命名。
目前已在 Win10 和 Win11 平板电脑上测试,并且可在两者上运行。
我非常有兴趣知道为什么该NETSH
命令返回错误。