crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Как средствами QT скрыть файл?
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Elfinit Дата 21.11.2009, 20:01
  Всегда пожалуйста)
Rocky Дата 20.11.2009, 23:05
  Кстати неплохая идея )) Чет мне в голову не пришло это )))
Elfinit Дата 20.11.2009, 22:39
 
Цитата(Rocky @ 20.11.2009, 21:42) *
Просто я хотел сделать скрытой папку с логами.. чтобы пользователь не мог ее взять и удалить.

Так кинь её по адресу getenv("APPDATA") + "/" + appname или getenv("TEMP") + "/" + appname или getenv("TMPDIR") "/" + appname (в линухе я кидаю в getenv("HOME") + "/" + appname). Вряд ли пользователь будет там регулярно сидеть и скурпулёзно удалять)
Rocky Дата 20.11.2009, 21:42
  Гы... все буквы куда-то разлетелись... :)

Просто я хотел сделать скрытой папку с логами.. чтобы пользователь не мог ее взять и удалить. В линухах все решается проще: установкой владельца директория. А вот в винде боюсь так не сделать... Поэтому решил скрыть. Вобщем, только winAPI юзать.. ясно..
Цитата
ловить вызов функций получения файлов или папок и если в перечислении попадается файл или папка, которые ты хочешь скрыть, пропускать их и отдавать следующий за ним файл или папку

не, все проще, есть папка logs внутри которой генерится куча html файлов с логами. С хуками кстати вариант..давно не занимался ничем таким.. Интересно, если происходит удаление файла через командную строку, прога, ставящая хук на удаление тоже выявит это? Тогда надо будет сделать чтобы сам резидент был неубиваем... :)

оффтоп
В линухах имя файла меняется.. это да... но есть такая вещь как хард-линки... Если память не изменяет ;)
ViGOur Дата 20.11.2009, 11:53
  Как уже было сказано, это нужно использовать API целевой системы.
Под виндовсом есть такие штуки как хуки - перехват вызова функций, даже если это функции вызываются не в твоем процессе и не тобой. В твоем случае нужно просто ловить вызов функций получения файлов или папок и если в перечислении попадается файл или папка, которые ты хочешь скрыть, пропускать их и отдавать следующий за ним файл или папку.

Под линуксом пока не знаю ничего о подобном...
Litkevich Yuriy Дата 20.11.2009, 11:30
 
Цитата(BRE @ 20.11.2009, 14:22) *
У linux есть скрытые файлы у которых точка в начале имени.
это особенность поведения файлового менеджера. Дело в том, что нельзя просто поставить точку в переди или убрать её, имя файла при этом меняется.
если где-то обращение содержало путь:
/foo/.bar/myfile
то убрав точку перед bar, мы уже не можем обращаться по старому пути - его больше нет.

В виндовозе мы можем менять этот атрибут (скрытости) не влияя на путь
BRE Дата 20.11.2009, 11:22
 
Цитата(Litkevich Yuriy @ 20.11.2009, 10:37) *
Rocky, в Линухе, например, вообще нет такого атрибута у файла/каталога

У linux есть скрытые файлы у которых точка в начале имени.

Цитата
А QFileInfo::isHidden в линуксе что говорит? Всегда false?

Для таких файлов true.
Elfinit Дата 20.11.2009, 11:13
  А QFileInfo::isHidden в линуксе что говорит? Всегда false?
Litkevich Yuriy Дата 20.11.2009, 10:37
  Rocky, в Линухе, например, вообще нет такого атрибута у файла/каталога
panter_dsd Дата 20.11.2009, 7:17
  А при чем тут Qt? Только API конкретной системы.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 23:29