public string GetDesktopName(object desktop) { IComVirtualDesktop comDesktop = (IComVirtualDesktop)desktop; // return name of desktop or "Desktop n" if it has no name Guid guid = comDesktop.GetId(); // read desktop name in registry string?desktopName = null; try { desktopName = (string?)Microsoft.Win32.Registry.GetValue("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\VirtualDesktops\\Desktops\\{" + guid.ToString() + "}", "Name", null); } catch { } // no name found, generate generic name if (string.IsNullOrEmpty(desktopName)) { // create name "Desktop n" (n = number starting with 1) desktopName = "Desktop " + (GetDesktopIndex(IntPtr.Zero, comDesktop) + 1).ToString(); } return(desktopName); }