Страница 1 из 1

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

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

ПС: Как с этим дела под nix?

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

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

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

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

Это работоспособно только для личных ПК, на компах где пользователь ограничен в правах начинаются проблемы. Свободного доступа для записи в папку Program file нет.

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

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

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

СообщениеДобавлено: 22.11.2021 10:37:02
wavebvg
Файлы, размещённые в tmp предполагают соответствующие атрибуты и после закрытия дескриптора они могут быть удалены системой. Чтобы избежать потери файлов, нужно либо не закрывать дескрипторы, либо использовать специальный каталог AppData в профиле текущего пользователя. Всю необходимую информацию о текущей конфигурации системы можно получить из переменных окружения.

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

СообщениеДобавлено: 13.02.2023 02:34:22
Cheb
Код: Выделить всё
{$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.
И домашняя папка пользователя под линуксами.
Внутри этой папки создаёшь папку МояПрограмма под виндовс или .мояпрограмма под линукс (начинать с точки, чтобы была невидимая). И уже в ней хранишь что надо на вечные времена.

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

СообщениеДобавлено: 13.02.2023 18:50:40
Sharfik
Я через реестр сделал чтение и поиск системных папок по тегам. Вот с линуском не работал, так что не знаю как там оно...


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

ProgramData еще есть.

И везде программы сторонние хранят свой мусор. https://g-ek.com/windows-10-papki-local ... -i-roaming