Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Downloaded Program Files


Автор: Pakshin A. S. 16.2.2003, 04:52
Передо мной возникла следующая проблема: как удалить все файлы папки Downloaded Program Files не через DeleteFile(), т. к. не всё корректно подчищается. Помогите кто чем может...

Автор: Song 16.2.2003, 05:03
Если DeleteFile() не удаляет, значит другие способы будут иметь такой же результат. Наверняка попались файлы с read-only атрибутами. Если так, то сначала их надо снять.

Автор: Pakshin A. S. 16.2.2003, 05:10
А вообще (теоритически) поиск всех файлов папки Downloaded Program Files и их удаление должны работать?

Автор: Song 16.2.2003, 05:18
Трудно сказать, там наверно есть какой-нибудь index, который постоянно занят системой и с ним ничего не сделашь.

Автор: Pakshin A. S. 16.2.2003, 18:08
Вчера вечерком я вывел в Memo всё содержимое папки Downloaded Program Files, там оказалось где-то около пяти файлов (расширение cab и inf), но Windowsовская очистка диска говорит что папка Downloaded Program Files пуста. Что делать, не знаю? Может дадите какой-нибудь совет, как отличать нужное от ненужного...

Автор: Song 16.2.2003, 18:15
Там есть desktop.ini, он скрытый

Автор: Pakshin A. S. 16.2.2003, 18:20
А чем он мне поможет, кроме этого: CLSID = ...

Автор: Song 16.2.2003, 19:11
Я тебе объясняю из-за чего не удаляется каталог. Само собой, что тебе он ни чем не поможет.

Автор: Pakshin A. S. 17.2.2003, 01:57
Всё равно не понял, на кой чёрт мне этот desktop.ini???

Автор: RA 17.2.2003, 02:28
Цитата(Pakshin @ 16.2.2003, 22:57)
Всё равно не понял, на кой чёрт мне этот desktop.ini???

У меня такаяже трабла только с помойкой, в ней около 20.000 файлов
каторые в ней лежат но не видны и каторые постоянно неудаётся удалить ничем кроме FAT32/

Автор: Vit 17.2.2003, 02:56
Цитата(Pakshin @ 16.2.2003, 16:57)
Всё равно не понял, на кой чёрт мне этот desktop.ini???

Просто этот файл охраняется виндой(так как является системным), винда не даёт удалить этот файл, а при наличии файла удаление каталога тоже невозможно.

Автор: X-Vlad 17.2.2003, 03:03
Всё приекрасно удаляется Windows Commanderom только что попробовал...smile.gif
кидаю код попробуй его:
Код

function DeleteDir(Dir:string) :boolean; // Удаление каталога
Var
found:integer;
SearchRec:TSearchRec;
attributes, newattributes:word;
Begin
result:=false;
if IOResult<>0 then;
ChDir(Dir);
if IOResult<>0 then
 begin
 end;
Found:=FindFirst('*.*', faAnyFile, SearchRec);
While Found = 0 do
 begin
  if (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then
   if (SearchRec.Attr and faDirectory)<>0 then
    begin
     if not DeleteDir(SearchRec.Name) then begin found:= FindNext(SearchRec); end;
    end
     else
      if not DeleteFile(SearchRec.Name) then
      begin
       NewAttributes := NewAttributes and not faHidden;
       FileSetAttr(SearchRec.Name, NewAttributes);
       NewAttributes := NewAttributes and not faSysFile;
       FileSetAttr(SearchRec.Name, NewAttributes);
       NewAttributes := NewAttributes and not faArchive;
       FileSetAttr(SearchRec.Name, NewAttributes);
       NewAttributes := NewAttributes and not faReadOnly;
       FileSetAttr(SearchRec.Name, NewAttributes);
       DeleteFile(SearchRec.Name)
      end;
     found:= FindNext(SearchRec);
    end;
  FindClose(SearchRec);
  ChDir('..');
  RmDir(Dir);
  result:=IOResult=0;
end;


dir - указываеш путь к каталогу.

Автор: X-Vlad 17.2.2003, 03:05
выше указаный код удаляет каталог со всем содержимым (подкаталоги тоже)...smile.gif

Автор: Vit 17.2.2003, 03:07
Зависит от винды, скорее всего будет работать под 95/98/NT и не будет под ME/2000/XP.

Код для удаления папки со всеми каталогами есть в нашем FAQ, стоит там чуть ли не первым!

Автор: X-Vlad 17.2.2003, 03:11
Мой код работает под любой виндой (9х\НТ\2000\ХР).... сам пробовал.


Автор: Vit 17.2.2003, 03:20
Цитата(X @ 16.2.2003, 18:11)
Мой код работает под любой виндой (9х\НТ\2000\ХР).... сам пробовал.

Я и не сомневаюсь что какую-то папку можно удалить, но речь идёт о системной папке.
Ты именно с системными папками пробовал? И System Restore у тебя не отключена?

Автор: SmaLL 17.2.2003, 17:56
Цитата(X @ 16.2.2003, 19:11)
Мой код работает под любой виндой (9х\НТ00\ХР).... сам пробовал.

в WinNT/Win2k/WinXP, если к папке и еЁ содержимому есть доступ, то код будет работать, а если например стоит readonly, то капец всему... коду wink.gif

Автор: X-Vlad 17.2.2003, 20:34
Согласен если ты хочешь удалить системную папку и у тебя нету админских прав то ето не получится....smile.gif
но можна программно зделать админ права и все удалится....


етот код удаляет и сис папки...smile.gif попробуйте.

Автор: SmaLL 17.2.2003, 21:00
Цитата(X @ 17.2.2003, 12:34)
Согласен если ты хочешь удалить системную папку и у тебя нету админских прав то ето не получится....smile.gif
но можна программно зделать админ права и все удалится....

Да ты хакер ! baaa.gif
Интересно как ты енто сделаешь..... hmmm.gif

Автор: Pakshin A. S. 18.2.2003, 02:54
Вообщето я уже писал о том что из папки Downloaded Program Files всё удалять не надо, т. к. там есть файлы (около пяти помимо Desktop.ini), которые по всей видимости нужны самому Windows, т. к. Windowsовская очистка диска говорит о том что папка Downloaded Program Files пустая, т. е. не даёт эти пять файлов трогать.

Автор: X-Vlad 18.2.2003, 02:58
Поправочка.... системные папки неудалялет...
я тут поколупался и зделал теперь любую папку удалит...smile.gif
Код

function DeleteDir(Dir:string) :boolean; // Удаление каталога
Var
found:integer;
SearchRec:TSearchRec;
attributes, newattributes:word;
Begin
//Start set attrib folder...
begin
 NewAttributes := NewAttributes and not faHidden;
 FileSetAttr(dir, NewAttributes);
 NewAttributes := NewAttributes and not faArchive;
 FileSetAttr(dir, NewAttributes);
 NewAttributes := NewAttributes and not faReadOnly;
 FileSetAttr(dir, NewAttributes);
end;
//end set attrib folder
result:=false;
if IOResult<>0 then;
ChDir(Dir);
if IOResult<>0 then
 begin
 end;
Found:=FindFirst('*.*', faAnyFile, SearchRec);
While Found = 0 do
 begin
  if (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then
   if (SearchRec.Attr and faDirectory)<>0 then
    begin
     if not DeleteDir(SearchRec.Name) then begin found:= FindNext(SearchRec); end;
    end
     else
      if not DeleteFile(SearchRec.Name) then
      begin
       NewAttributes := NewAttributes and not faHidden;
       FileSetAttr(SearchRec.Name, NewAttributes);
       NewAttributes := NewAttributes and not faSysFile;
       FileSetAttr(SearchRec.Name, NewAttributes);
       NewAttributes := NewAttributes and not faArchive;
       FileSetAttr(SearchRec.Name, NewAttributes);
       NewAttributes := NewAttributes and not faReadOnly;
       FileSetAttr(SearchRec.Name, NewAttributes);
       DeleteFile(SearchRec.Name)
      end;
     found:= FindNext(SearchRec);
    end;
  FindClose(SearchRec);
  ChDir('..');
  RmDir(Dir);
  result:=IOResult=0;
end;


только незнаю на NTFS работает или нет..sad.gif мне в облом конвертировать раздел в NTFS ..smile.gif) если у кого стоит попробуйте и напишите результат...
спасибо.

Автор: Pakshin A. S. 18.2.2003, 03:05
Попробуй внимательно перечитать сообщение от 17.2.2003, 18:54

Автор: X-Vlad 18.2.2003, 03:11
Цитата

Попробуй внимательно перечитать сообщение от 17.2.2003, 18:54


что-то невижу >> 17.2.2003, 18:54 может у нас разница по времени? smile.gif

Автор: Pakshin A. S. 18.2.2003, 03:14
Я имел ввиду, что полная очистка именно этой папки приведёт к системным ошибкам...

Автор: X-Vlad 18.2.2003, 03:35
В етой папке хранятся dll and ocx которые ты подгружал к браузеру( IE) например Flash Player...
я думаю что они неиспользуются виндовсом потому что винда бы недала удалить используемый файл (как бы етого нехотелось и что-бы для етого недалали) ета папка как кеш типа папки Temporary Internet Files...

Автор: RA 18.2.2003, 11:38
У меня Идея а что если Удалить этот Folder на раннем запуске Windows!
или Грохнуть Shell а потом удалить?

Автор: SmaLL 18.2.2003, 17:27
Цитата(RAdmin @ 18.2.2003, 03:38)
У меня Идея а что если Удалить этот Folder на раннем запуске Windows!
или Грохнуть Shell а потом удалить?

А ещЁ лучше загрузиться с дискеты, запустить fdisk и порезать всЁ к чертям !
Но это я так, лирическое отступление, да простят меня модераторы ! rolleyes.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)