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);
        }