Я работаю над ошибкой, когда у меня есть приложение MFC, которое делает странные вещи при установке, когда установлено шифрование жесткого диска Sophos Safeguard. Мне жаль, что я так расплывчато здесь, но я пишу это вне офиса, так что это все из моей (плохой) памяти.
Три вещи, которые я заметил:
AfxGetResourceHandle () не возвращает согласованный дескриптор ресурса. В одном случае мы пытаемся загрузить строковый ресурс, и по какой-то причине дескриптор ресурса, который мы получаем этим методом, отличается от всех других строк.
Невозможно создать шаблон CDocumentTemplate. Существует ошибка трассировки, которую я не могу вспомнить. Отредактирую и опубликую, когда я завтра.
Такое поведение проявляется в версии проекта для Visual Studio 2005, но не в версии Visual Studio 2008. К сожалению, перейти на версию 2008 года не вариант.
Ошибка не всегда воспроизводима, если я перехожу к отладчику. Кроме того, появление окон отладочных сообщений меняет поведение, что заставляет меня думать, что либо есть какое-то состояние гонки, возникающее при обработке событий MFC, но я не уверен, как я узнаю наверняка или даже что я могу с этим поделать, если бы сделал.
Я думаю, что есть какая-то причина, по которой приложение ведет себя странно, но я выложил больше симптомов. Кто-нибудь может подумать, что я должен проверить?
Я запустил обновление Windows в тестовой среде, чтобы убедиться, что все обновлено, и я проверил процесс в procmon, чтобы убедиться, что шифрование диска мешает и конфликтует с файлами - это не так. Похоже, что это так, но наше приложение каким-то образом связано с тем, что наше приложение обращается к путям, связанным с Sophos, во временном каталоге.