Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   *Теория* | Очистка реестра от "битых" ссылок на файлы (http://forum.oszone.net/showthread.php?t=73849)

DedAlex 01-11-2006 16:48 505410

*Теория* | Очистка реестра от "битых" ссылок на файлы
 
Нужно написать программу для очистки реестра от "битых" ссылок на файлы.
Сама работа с реестром проблемы не представляет. Я не знаю, как определить, что данная строка является именем файла, а не чем-то другим.

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

hasherfrog 01-11-2006 17:16 505418

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

DedAlex 01-11-2006 23:08 505580

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

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


Время: 08:03.

Время: 08:03.
© OSzone.net 2001-