ReadDirectoryChangesW считает, что ярлык удаляется сразу после создания - PullRequest
0 голосов
/ 17 июля 2009

Я использую эту реализацию ReadDirectoryChangesW для мониторинга изменений на рабочем столе. Моя программа планирует запустить небольшую программу при создании файла на рабочем столе.

Теперь проблема, с которой я сталкиваюсь, заключается в том, что я создаю новый ярлык через контекстное меню, вызываемое правой кнопкой мыши. ReadDirectoryChangesW получает уведомление о том, что файл был создан, но сразу после этого получает другое уведомление о том, что файл удален. Я столкнулся с этой проблемой начиная с Windows Vista.

Кто-нибудь знает, что может быть не так? Есть ли другая функция, которую я должен использовать, чтобы отслеживать изменения каталогов, относящиеся к Vista и 7?

Спасибо, Кришна

Ответы [ 3 ]

0 голосов
/ 18 июля 2009

Windows делает некоторые забавные вещи с файлами .lnk, так что вы не можете видеть расширение .lnk. Может быть, поэтому удаленное уведомление отправляется, потому что сама Windows не может видеть файл «New Shortcut.lnk», только «Новый ярлык». Но это всего лишь теория.

Итак, я бы попытался обойти это и игнорировать уведомление об удалении файла, если файл все еще существует. Предполагая, что вы можете понять, что файл .lnk все еще существует, конечно:)

0 голосов
/ 05 августа 2009

Мне удалось решить эту проблему. Я до сих пор не знаю, почему я получаю все эти странные события ReadDirectyChangesW, но я получил свой конечный результат, поэтому я оставляю этот вопрос таким.

Спасибо за помощь.

0 голосов
/ 17 июля 2009

Определили ли вы какие-либо фильтры: возможно, вы видите воссозданный ярлык (не соответствующий вашему фильтру).

Explorer имеет тенденцию создавать вещи с фиксированным именем, а затем переименовывать их. Так что ReadDirectoryChangesW увидит несколько изменений.

Дополнительные мысли:

Обратите внимание, что буфер с уведомлением об изменениях может содержать несколько уведомлений, все они читаются.

Что показывает Process Monitor одновременно?

...