![]() |
*Теория* | Очистка реестра от "битых" ссылок на файлы
Нужно написать программу для очистки реестра от "битых" ссылок на файлы.
Сама работа с реестром проблемы не представляет. Я не знаю, как определить, что данная строка является именем файла, а не чем-то другим. Если кто сталкивался с такой задачей - подскажите решение. |
Я считаю, что в "общем" случае задача не решаема.
Как правило, это будет строка REG_SZ, но может быть и binary. Сравните HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedMRU или HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Wallpaper\MRU и директории из HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSaveMRU или HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall Но это цветочки Основная проблема в том, что имя файла в самом общем случае будет иметь вид URI http://www.ietf.org/rfc/rfc3986.txt (140К) Так что надо уточнить задачу. Например, не работать с относительными путями. См. в RFC приложение Appendix A. Кстати, можете посмотреть реализацию метода bool QFileInfo::isFile () const из исходников QT. |
Я согласен, что в "общем" случае задача похоже не решаема.
Наверно хватит поиска файлов с полными путями. Единственное, что мне пришло в голову, это поиск пары символов ":\", если они есть, то это файл, если нет то нет. P.S. Насчет исходников QT, в С я не силен, но спасибо, попробую посмотреть. |
Время: 08:03. |
Время: 08:03.
© OSzone.net 2001-