/// <summary> /// COMポートのフレンドリーネームを取得する /// </summary> /// <param name="portName"></param> /// <returns></returns> private static string GetFriendlyNameFromCOM(String portName) { var comRegex = new Regex(@"\(" + portName + @"\)"); // デバイス名に"(COM3)"などが入ってるものを探したい var pnpComs = new ManagementClass("Win32_PnPEntity") .GetInstances() // 一覧を取得 .Cast <ManagementObject>() .Select(managementObj => managementObj.GetPropertyValue("Name")) // 名前拾ってくる .Where(nameObj => nameObj != null) // プロパティ値が拾えないものはnullになっているので弾く .Select(nameObj => nameObj.ToString()) // 文字列に直し、 .Where(name => comRegex.IsMatch(name)); // 正規表現で最後のフィルタリング return(pnpComs.ElementAt(0)); }