none
Как извлечь закладки из Microsoft Edge RRS feed

  • Вопрос

  • Здравствуйте

    Пишу на С++, хочу импортировать закладки из Microsoft Edge в свою программу. Как это можно сделать? 

    Изучая вопрос узнал, что в последних версиях Edge-a закладки хранятся тут c:\Users\USER_NAME\AppData\Local\Packages\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\AC\MicrosoftEdge\User\Default\DataStore\Data\nouser1\120712-0049\DBStore\spartan.edb. Просмотрел файл ESEDatabaseView-eром, - действительно все, что мне нужно есть в этом файле. Поискал библиотеки для работы с базами данных edb, наткнулся на https://docs.microsoft.com/en-us/windows/win32/extensible-storage-engine/extensible-storage-engine. В референсах не нашел нашел примеров для простейшего использования. Тут https://www.codeproject.com/Articles/52715/Extensible-Storage-Engine есть пример создания базы данных. Попробовал разобраться, но уперся в то, что при попытке открыть файл получаю ошибку JET_errDatabaseDirtyShutdown /* Database was not shutdown cleanly. Recovery must first be run to properly complete database operations for the previous shutdown. */ Как правильно восстановить этот файл? Если открыть этот файл SEDatabaseView-eром то все нормально видно.

    Подскажи, как правильно открывать/читать записи в edb файлах?

    Есть ли другие библиотеки/решения/примеры для работы с edb файлами?

    Есть ли возможность получить букмарки из Microsoft Edga-a не использую выше описанный файл edb?

    Спасибо.

    6 января 2020 г. 16:41

Ответы

  • Здравствуйте,

    Посмотрите:

     case JET_err.DatabaseDirtyShutdown:
                            Output("Dirty shutdown detected, attempting to recover...");
                            try
                            {
                                Api.JetTerm2(instance, TermGrbit.Complete);
                                using (var recoverInstance = new Instance("Recovery instance for: " + database))
                                {
                                    new TransactionalStorageConfigurator(configuration, this).ConfigureInstance(recoverInstance.JetInstance, path);
                                    recoverInstance.Init();
                                    using (var recoverSession = new Session(recoverInstance))
                                    {
                                        Api.JetAttachDatabase(recoverSession, database,
                                                              AttachDatabaseGrbit.DeleteCorruptIndexes);
                                        Api.JetDetachDatabase(recoverSession, database);
                                    }
                                }


    Если Вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение" Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.

    • Помечено в качестве ответа Alexander Gumenniy 17 января 2020 г. 9:57
    7 января 2020 г. 8:37
    Модератор