Войти

Показать полную графическую версию : *Теория* | Очистка реестра от "битых" ссылок на файлы


DedAlex
01-11-2006, 16:48
Нужно написать программу для очистки реестра от "битых" ссылок на файлы.
Сама работа с реестром проблемы не представляет. Я не знаю, как определить, что данная строка является именем файла, а не чем-то другим.

Если кто сталкивался с такой задачей - подскажите решение.

hasherfrog
01-11-2006, 17:16
Я считаю, что в "общем" случае задача не решаема.
Как правило, это будет строка 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.

[hr]
Кстати, можете посмотреть реализацию метода bool QFileInfo::isFile () const из исходников QT.

DedAlex
01-11-2006, 23:08
Я согласен, что в "общем" случае задача похоже не решаема.
Наверно хватит поиска файлов с полными путями.
Единственное, что мне пришло в голову, это поиск пары символов ":\", если они есть, то это файл, если нет то нет.

P.S. Насчет исходников QT, в С я не силен, но спасибо, попробую посмотреть.




© OSzone.net 2001-2012