Защита от очистки Temp Windows

Модератор: Модераторы

Защита от очистки Temp Windows

Сообщение Sharfik » 21.11.2021 19:54:55

Для работы программы сделал распаковку файла документа во временную папку temp ОС. Все прекрасно работает, до тех пор пока ОС не уходит спать. Поскольку Windows имеет обычновение чистить свой Temp, то и папка с открытым документом чистится. Комп работает 24/7, в принципе не выключается. Уходишь домой с открытым в программе проектом, возвращаешься потом к ПК для работы, все выглядит так же. Но потом выясняется, что пропали файлы которые не открывались, но были вложены в архив распакованного документа.
Есть какой то инструмент в APi, чтобы показать ОС что файлы папки еще нужны? Даже если они не открыты в программе.

ПС: Как с этим дела под nix?
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 760
Зарегистрирован: 20.07.2013 01:04:30

Re: Защита от очистки Temp Windows

Сообщение Alex2013 » 21.11.2021 21:46:43

1 Зачем нужно ОБЯЗАТЕЛЬНО создавать файл именно в "Temp Windows" ? Чем каталог программы не угодил?
2 Насколько я помню для того чтобы сделать временный файл "нестираемым" достаточно создать в внутри Temp папки свой каталог или поставить соответствующий атрибут (системный,только чтение и т.п. ) еще можно лишить систему прав доступа к конкретному файлу или папке - но это довольно сложно сделать из программы и вообще как бы "оверкилл". )
Alex2013
долгожитель
 
Сообщения: 2926
Зарегистрирован: 03.04.2013 11:59:44

Re: Защита от очистки Temp Windows

Сообщение Sharfik » 21.11.2021 23:11:42

Alex2013 писал(а):1 Зачем нужно ОБЯЗАТЕЛЬНО создавать файл именно в "Temp Windows" ? Чем каталог программы не угодил?

Это работоспособно только для личных ПК, на компах где пользователь ограничен в правах начинаются проблемы. Свободного доступа для записи в папку Program file нет.
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 760
Зарегистрирован: 20.07.2013 01:04:30

Re: Защита от очистки Temp Windows

Сообщение Alex2013 » 22.11.2021 04:42:32

Sharfik писал(а):Program file
:shock: А файловая система вообще закрыта? Ведь как раз для таких случаев и есть папка "Users" которая содержит (с привязкой к логину пользователя ) "не временные" и "не совсем временные" папки создаваемые программами без участия и контроля со стороны пользователя .
(Правильно использовать Application Data но это не всегда удобно )
Alex2013
долгожитель
 
Сообщения: 2926
Зарегистрирован: 03.04.2013 11:59:44

Re: Защита от очистки Temp Windows

Сообщение wavebvg » 22.11.2021 10:37:02

Файлы, размещённые в tmp предполагают соответствующие атрибуты и после закрытия дескриптора они могут быть удалены системой. Чтобы избежать потери файлов, нужно либо не закрывать дескрипторы, либо использовать специальный каталог AppData в профиле текущего пользователя. Всю необходимую информацию о текущей конфигурации системы можно получить из переменных окружения.
wavebvg
постоялец
 
Сообщения: 354
Зарегистрирован: 28.02.2008 04:57:35

Re: Защита от очистки Temp Windows

Сообщение Cheb » 13.02.2023 02:34:22

Код: Выделить всё
{$ifdef unix}
    function GetLocalAppDataDir: Utf8String;
    begin
      Result:= IncludeTrailingPathDelimiter(GetEnvironmentVariable('HOME'));
    end;
  {$endif}

  {$ifdef windows}
    function GetSpecialFolder(f: integer): Utf8String;
    var
      i: integer;
      u: UnicodeString;
    begin
      Result:= '';

      setlength(u, max_path);
      fillchar(u[1], length(u) * sizeof(unicodechar), 0);
      shgetfolderpathw(0, f, 0, shgfp_type_current, punicodechar(@u[1]));
      setlength(u, strlen(punicodechar(@u[1])));
      if u > '' then begin
        u[1]:= upcase(u[1]); // Буква диска, для красоты
        result:= includetrailingpathdelimiter(utf8encode(u));
      end;
    end;

    function GetLocalAppDataDir: utf8string;
    begin
      Result:= GetSpecialFolder(CSIDL_APPDATA);
    end;
  {$endif}

Это папка "Application Data" пользователя, в которой программы должны хранить свой хабар. Стандарт де-юре ещё со времён Windows 2000.
И домашняя папка пользователя под линуксами.
Внутри этой папки создаёшь папку МояПрограмма под виндовс или .мояпрограмма под линукс (начинать с точки, чтобы была невидимая). И уже в ней хранишь что надо на вечные времена.
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Re: Защита от очистки Temp Windows

Сообщение Sharfik » 13.02.2023 18:50:40

Я через реестр сделал чтение и поиск системных папок по тегам. Вот с линуском не работал, так что не знаю как там оно...


У Win черт ногу сломит..
AppData
-Local
-LocalLow
-Roaming

ProgramData еще есть.

И везде программы сторонние хранят свой мусор. https://g-ek.com/windows-10-papki-local ... -i-roaming
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 760
Зарегистрирован: 20.07.2013 01:04:30


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Рейтинг@Mail.ru