ReadDirectoryChangesW считает, что ярлык удаляется сразу после создания
Я использую эту реализацию ReadDirectoryChangesW для мониторинга изменений на рабочем столе. Моя программа планирует запустить небольшую программу при создании файла на рабочем столе.
Теперь проблема, с которой я сталкиваюсь, заключается в том, что когда я создаю новый ярлык через контекстное меню, вызываемое правой кнопкой мыши, ReadDirectoryChangesW получает уведомление о том, что файл был создан, но сразу после этого получает другое уведомление о том, что файл был удален. Я столкнулся с этой проблемой начиная с Windows Vista.
У кого-нибудь есть идеи, что может быть не так? Есть ли другая функция, которую я должен использовать, чтобы отслеживать изменения каталогов, специфичные для Vista и 7?
Спасибо Кришна
3 ответа
Мне удалось решить эту проблему. Я до сих пор не знаю, почему я получаю все эти странные события ReadDirectyChangesW, но я получил свой конечный результат, поэтому я оставляю этот вопрос.
Спасибо за помощь.
Определили ли вы какие-либо фильтры: возможно, вы видите воссозданный ярлык (не соответствующий вашему фильтру).
Проводник имеет тенденцию создавать вещи с фиксированным именем, а затем переименовывать их. Так ReadDirectoryChangesW
увидим несколько изменений.
Дополнительные мысли:
Обратите внимание, что буфер с уведомлением об изменении может содержать несколько уведомлений, все они читаются.
Что показывает Process Monitor одновременно?
Windows делает некоторые забавные вещи с файлами.lnk, так что вы не можете видеть расширение.lnk. Может быть, поэтому удаленное уведомление отправляется, потому что сама Windows не может видеть файл "New Shortcut.lnk", только "Новый ярлык". Но это всего лишь теория.
Так что я бы попытался обойти это, и игнорировать уведомление об удалении файла, если файл все еще существует. Предполагая, что вы можете понять, что файл.lnk все еще существует, конечно:)