Проверить, всегда ли файл или папка доступны в автономном режиме?

Как мы можем проверить (вернуть true или false), активирована ли папка или файл для «Всегда доступен в автономном режиме»? Я использую Microsoft Sync Center.

введите здесь описание изображения


person eMi    schedule 04.12.2018    source источник
comment
docs.microsoft.com/en-us/windows/ рабочий стол/FileIO/   -  person James Hill    schedule 04.12.2018
comment
@JamesHill, как это поможет? Вопрос касается настроек конкретного приложения в отношении папок, а не атрибутов локального файла.   -  person Panagiotis Kanavos    schedule 04.12.2018
comment
используя ссылку @JamesHill и stackoverflow.com/questions/41241247/, возможно, вы сможете найти ответ   -  person    schedule 04.12.2018
comment
@Matt Извлечь значки? Это вообще перебор. Также он говорит только о папках. Я ищу файлы и папки. Должен быть более простой способ...   -  person eMi    schedule 04.12.2018
comment
Я полагаю, что это тоже будет не так просто, потому что это Центр синхронизации, который объявляет «Всегда доступен в автономном режиме» в раскрывающемся меню. Это означает, что следует использовать такой API для Центра синхронизации.   -  person Belurd    schedule 04.12.2018
comment
если кому-то интересно, я сам придумал решение через несколько часов   -  person eMi    schedule 06.12.2018


Ответы (1)


Мне удалось получить необходимую информацию с помощью поставщика WMI: https://docs.microsoft.com/de-de/previous-versions/windows/desktop/offlinefiles/about-offline-files-wmi-provider

РЕДАКТИРОВАТЬ:

Не забудьте добавить ссылку на System.Management.

Я придумал следующий фрагмент:

            ManagementScope scope = new ManagementScope("\\\\.\\ROOT\\cimv2");
            ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_OfflineFilesItem");
            ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
            ManagementObjectCollection queryCollection = searcher.Get();
            foreach (ManagementObject m in queryCollection)
            {
                var pinInfo = (ManagementBaseObject)m.GetPropertyValue("PinInfo");

                if (pinInfo != null)
                {
                    if ((bool)pinInfo.GetPropertyValue("Pinned"))
                    {
                          //the file or folder is set to "always available offline"
                          var itemPath = m["ItemPath"]
                    }
                }
            }
person eMi    schedule 04.12.2018
comment
Пожалуйста, рассмотрите возможность добавления кода. Этот ответ лишь немного лучше, чем размещение только ссылки. - person user247702; 04.12.2018
comment
@Stijn Да, конечно, но забавный факт в том, что единственное, что я здесь получил, это только ссылки без дополнительных объяснений. Но да, есть мое решение. Надеюсь, это поможет кому-то еще в будущем... - person eMi; 06.12.2018