我会尝试用图片来解释,因为它看起来真的很奇怪。
系统 - Win10(目前最新更新)
Bt USB Dongle - Erston Bluetooth 5.1(REALTECH 芯片)
耳机 - JBL TUNE700BT
,这些虚拟设备阻止我的耳机连接到此 Bt。
,即使从设备管理器中删除这些记录,我也无法在查找窗口中看到我的耳机,也无法添加它们
,尽管我可以成功将我的耳机添加到其他 Bt 网络
如果我拔下并再次插入我的加密狗 - 这些记录将再次出现(!!)
我如何删除这些虚拟记录?
更新1:
我从一开始就尝试通过“现代控制面板”取消配对。结果相同。
答案1
我也有类似的问题,发现这个答案在另一个论坛。这种方法为我解决了这个问题:
通常不会死机一个线程,但我花了两个星期在网上搜索试图解决这个问题,这个线程在搜索排名中相当高,希望能对某人有所帮助。
我的症状:
- 之前可以使用的蓝牙扬声器(我使用的是 UE BOOM 2)停止连接
- Windows 10“蓝牙和其他设备”菜单显示该设备已配对
- 按“连接”按钮尝试连接,但失败后会返回到“已配对”状态
- 删除设备会将设备从菜单中隐藏,但只要你打开和关闭蓝牙,或重新启动电脑,该设备就会恢复
- 你拔掉了自己的头发。
在我经过多次不成功的互联网搜索和一次系统还原之后,终于找到了一个有效的解决方案:
- 下载这个已有 7 年历史的命令行蓝牙工具集:蓝牙命令行工具- 通过命令行使用蓝牙
- 安装它,确保启用“将蓝牙命令行工具目录添加到路径”选项
- 打开 Powershell
- 将无法正常工作的设备置于配对模式警告:以下命令将取消所有蓝牙设备的配对
- 输入“btpair -u”
- 突然,Windows 询问我是否允许与无法正常工作的设备配对
- 点击是,再次成功连接
- 喜极而泣
上帝,我希望这能帮助别人。
答案2
这电源外壳可能会有所帮助。它将显示找到的设备并允许您通过 API 函数删除它们。将整个代码块复制并粘贴到电源外壳窗户:
$Source = @"
[DllImport("BluetoothAPIs.dll", SetLastError = true, CallingConvention = CallingConvention.StdCall)]
[return: MarshalAs(UnmanagedType.U4)]
static extern UInt32 BluetoothRemoveDevice(IntPtr pAddress);
public static UInt32 Unpair(UInt64 BTAddress) {
GCHandle pinnedAddr = GCHandle.Alloc(BTAddress, GCHandleType.Pinned);
IntPtr pAddress = pinnedAddr.AddrOfPinnedObject();
UInt32 result = BluetoothRemoveDevice(pAddress);
pinnedAddr.Free();
return result;
}
"@
Function Get-BTDevice {
Get-PnpDevice -class Bluetooth |
?{$_.HardwareID -match 'DEV_'} |
select Status, Class, FriendlyName, HardwareID,
# Extract device address from HardwareID
@{N='Address';E={[uInt64]('0x{0}' -f $_.HardwareID[0].Substring(12))}}
}
################## Execution Begins Here ################
$BTR = Add-Type -MemberDefinition $Source -Name "BTRemover" -Namespace "BStuff" -PassThru
$BTDevices = @(Get-BTDevice) # Force array if null or single item
Do {
If ($BTDevices.Count) {
"`n******** Bluetooth Devices ********`n" | Write-Host
For ($i=0; $i -lt $BTDevices.Count; $i++) {
('{0,5} - {1}' -f ($i+1), $BTDevices[$i].FriendlyName) | Write-Host
}
$selected = Read-Host "`nSelect a device to remove (0 to Exit)"
If ([int]$selected -in 1..$BTDevices.Count) {
'Removing device: {0}' -f $BTDevices[$Selected-1].FriendlyName | Write-Host
$Result = $BTR::Unpair($BTDevices[$Selected-1].Address)
If (!$Result) {"Device removed successfully." | Write-Host}
Else {"Sorry, an error occured." | Write-Host}
}
}
Else {
"`n********* No devices found ********" | Write-Host
}
} While (($BTDevices = @(Get-BTDevice)) -and [int]$selected)