Отправляет email-рассылки с помощью сервиса Sendsay

[TC] Как очистка диска Windows определяет файл в качестве временного?

Всем доброго дня!
Подскажите, кто знает.
Чем определяется, окажется ли файл в списке кандидатов на удаление при очистке диска?
Сразу говорю, помещение файла в папку c:\windows\temp на это не влияет.
После очистки диска файл как лежал там, так и лежит. Хотя, может быть должно пройти какое-то время, не знаю.
Предположил, что у файла может быть соответствующий атрибут, но нет, вроде нет такого.

С уважением
Алик Гаджимурадов.

Ответить   Wed, 15 Jan 2025 17:10:40 +0700 (#3709587)

 

Ответы:

Подскажите, кто знает.
Чем определяется, окажется ли файл в списке кандидатов на удаление при
очистке диска?
Сразу говорю, помещение файла в папку c:\windows\temp на это не влияет.
После очистки диска файл как лежал там, так и лежит. Хотя, может быть должно
пройти какое-то время, не знаю.
Предположил, что у файла может быть соответствующий атрибут, но нет, вроде
нет такого.

Здравствуйте!
Папка c:\windows\temp или другая назначенная в переменных средах и
вызываемая по %temp% не очищается полностью очисткой. За очисткой своих
хвостов должны следить сами проги которые используют временную папку, ну или
неродные очищальщики ее так же чистят иногда.
Да и файл, который и удаляет очистка может быть не удален по причине того,
что он занят каким-либо процессом.
Вы попробуйте свой файл поместить в корзину и посмотрите, думаю очистка
удалит его на 100 процентов.
Удачи!

Ответить   Thu, 16 Jan 2025 19:12:04 +1000 (#3709622)

 

Здравствуйте, Светлый!

Ну то что очистка очищает корзину, это понятно. Но задача чуток не в этом.
Немного поясню ситуацию.
Я написал приложение и инсталятор к нему.
Во время установки в папку C:\windows\temp копируется анинсталлер. При
вызове процедуры удаления анинсталлер удаляет файлы приложения и записи в
реестре, но сам себя удалить, естественно, не может. Я предполагал, что в
процессе удаления будет возможность пометить анинсталлер как временный
файл, чтобы программа очистки диска его удалила, но, так и не нашёл, как это
сделать. По крайней мере средствами python.
Есть конечно возможность создать временный файл непосредственно во время
исполнения скрипта , и передать в него код отвечающий за удаление, в этом
случае временный файл будет удалён сразу после закрытия. Но, честно говоря,
логику переписывать пока что лениво.

С уважением
Алик Гаджимурадов.
P.S Конечно, по нынешним временам 7 mb это не размер, и можно оставить всё
как есть. Но не люблю когда программы оставляют мусор, и самому плодить
такое не хотелось бы.

Ответить   Fri, 17 Jan 2025 14:20:41 +0700 (#3709655)

 

17.01.2025 "Alkor" пишет:

Возможно будет лучше положить анинсталлер в папку с другими файлами
приложения, а для самоудаления использовать функцию MoveFileExW из
kernel32.dll:
https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-movefileexw
Если используется Python, то можно изобразить что-то вроде такого:
from ctypes import windll, WinError
existingFileName = "путь_к_uninstall.exe"
MOVEFILE_DELAY_UNTIL_REBOOT = 0x4
if not windll.kernel32.MoveFileExW(existingFileName, None,
MOVEFILE_DELAY_UNTIL_REBOOT):
raise WinError()
В результате система сама удалит файл uninstall.exe при следующей
перезагрузке.

Ответить   Fri, 17 Jan 2025 20:20:57 +0800 (#3709659)

 

Возможно будет лучше положить анинсталлер в папку с другими файлами
приложения, а для самоудаления использовать функцию MoveFileExW из
kernel32.dll:

Здравствуйте!
Я вот в этих установках и деинсталяциях не сильно разбираюсь, но есть же
какая-то майкрософтовская утилита, которая и устанавливкает приложение и
прописывает его в список установленных и потом удаляет со всеми хвостами.
А если свое что-то колхозить, то я проделывал так.
В унинсталлер добавляем создание текстового файла. Этот текстовый файл есть
ничто иное, как скрипт VBS. После выполнения работы унинсталлера запускаем
скрипт. В скрипте прописано удаление унинсталлера и самого себя. Проверено,
работает.
Если надо поищу скрипт.
Удачи!

Ответить   Sat, 18 Jan 2025 19:46:40 +1000 (#3709678)

 

Всем доброго дня!
Кварк, спасибо большое, ваш способ сработал.

Yunics

Очень плохая идея, копируйте его в папку с установленной программой, потому,
что в %temp% кто угодно и что угодно может делать.

Имеете в виду пользователей, или всякого рода чистильщики?
В любом случае, За совет спасибо, анинсталлер убрал в папку с приложением,
благо теперь он удаляется нормально.

С уважением
Алик Гаджимурадов.

Ответить   Sat, 18 Jan 2025 19:37:21 +0700 (#3709683)

 

Доброго времени суток всем!
Alkor в письме от 18.01.2025; 15:37 пишет:

%temp% в юзерспейсе полностью открыта на чтение и запись залогинившимся
пользователем, потому что наследует все права от папки, определённой, как
%userprofile%, а у неё полный доступ для пользователя на чтение и запись.

А у этих, если они правильно установлены и uac не выключен будут права и на
системную переменную %temp%, которая, как правило, разрешается в
c:\windows\temp.

Ответить   Sun, 19 Jan 2025 20:43:01 +0300 (#3709709)

 

Доброго времени суток всем!
Alkor в письме от 17.01.2025; 10:20 пишет:

Очень плохая идея, копируйте его в папку с установленной программой, потому,
что в %temp% кто угодно и что угодно может делать.

Ответить   Fri, 17 Jan 2025 15:30:12 +0300 (#3709664)