我想嘗試使用 c# 從 Windows 10 中的 USB 設備讀取最后一個已知的父設備,這在設備管理器 -> 設備屬性 -> 詳細資訊中可見。我在谷歌上搜索了很多,找到了很多獲取制造商等的解決方案,但我無法檢索到想要的資訊。在我看到的 Microsoft 網站上,該 Win32Pnp 物體類僅回傳以下內容:https ://i.stack.imgur.com/DCAT7.png
有沒有其他方法可以讀取最后一個已知的父級?
非常感謝???? 最好的問候,
戴夫
uj5u.com熱心網友回復:
截至今天,“最后一個已知的父級”屬性鍵尚未記錄。它的名字是DEVPKEY_Device_LastKnownParent,它的價值是{83DA6326-97A6-4088-9453-A1923F573B29} 10。
并且Win32_PnPEntity有一個GetDeviceProperties 方法,您可以使用它來讀取使用其鍵名的任何屬性。
因此,這里是一個示例控制臺 C# 代碼,它為系統中的所有設備轉儲它(和友好名稱):
foreach (var mo in new ManagementObjectSearcher(null, "SELECT * FROM Win32_PnPEntity").Get().OfType<ManagementObject>())
{
// ask for 2 properties
var args = new object[] { new string[] { "DEVPKEY_Device_FriendlyName", "DEVPKEY_Device_LastKnownParent" }, null };
// or this works too using the PK's value formatted as string
//var args = new object[] { new string[] { "DEVPKEY_Device_FriendlyName", "{83DA6326-97A6-4088-9453-A1923F573B29} 10" }, null };
// call Win32_PnPEntity.GetDeviceProperties
mo.InvokeMethod("GetDeviceProperties", args);
var mbos = (ManagementBaseObject[])args[1]; // one mbo for each device property key
var name = mbos[0].Properties.OfType<PropertyData>().FirstOrDefault(p => p.Name == "Data")?.Value;
if (name != null)
{
Console.WriteLine(name);
var parent = mbos[1].Properties.OfType<PropertyData>().FirstOrDefault(p => p.Name == "Data")?.Value;
Console.WriteLine(" " parent);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/328722.html
