예제 #1
0
        /// <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));
        }