begin process at 2008 08 20 15:26:49
1 228 921 membres
286 nouveaux aujourd'hui
14 259 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Comment delete des fichiers d'un dossier systeme [ Archives / Fichier / Disque ] (BenXbox)

Comment delete des fichiers d'un dossier systeme le 15/05/2005 13:56:13

BenXbox

Salut à tous,
Voila j'ai essayer de supprimer manuellement le dossier Cookies de ma session Xp, et il m'affiche un message comme quoi je ne peut pas supprimer le dossier, j'ai essayer avec la fonction suivante et il m'affiche le même message :

function EffaceDossier(Dossier : String): Boolean; var FileOpStruct : TShFileOpStruct;
begin
FileOpStruct.Wnd := 0;
FileOpStruct.wFunc := FO_DELETE;
FileOpStruct.pFrom := PChar(Dossier);
FileOpStruct.pTo := nil;
FileOpStruct.fFlags := FOF_NOCONFIRMATION or FOF_SILENT;
FileOpStruct.lpszProgressTitle := nil;
Result := ShFileOperation(FileOpStruct) = 0;
end;

Alors j'aurais voulue savoir si il y a une moyen de supprimer les fichiers et les sous dossiers qui sont à l'intérieure de ce dossier.

Merci d'avance.


Mon Site Web : [ Lien ]


Re : Comment delete des fichiers d'un dossier systeme le 16/05/2005 08:01:58

Kenavo
Salut BenBox,

Il faut probablement modifier les attibuts du dossier. Il doit avoir l'attribut System qui t'empêche de l'effacer.


Pout lire les attributs :  Attributs := GetFileAttributes(PChar(Dossier));  // Attributs : DWord
Pour les modifier       : 
SetFileAttributes(PChar(Dossier), Attributs);

Avec pour valeurs d'attributs (dans Windows.pas) :

  {$EXTERNALSYM FILE_ATTRIBUTE_READONLY}
  FILE_ATTRIBUTE_READONLY             = $00000001;
  {$EXTERNALSYM FILE_ATTRIBUTE_HIDDEN}
  FILE_ATTRIBUTE_HIDDEN               = $00000002;
  {$EXTERNALSYM FILE_ATTRIBUTE_SYSTEM}
  FILE_ATTRIBUTE_SYSTEM               = $00000004;
  {$EXTERNALSYM FILE_ATTRIBUTE_DIRECTORY}
  FILE_ATTRIBUTE_DIRECTORY            = $00000010;
  {$EXTERNALSYM FILE_ATTRIBUTE_ARCHIVE}
  FILE_ATTRIBUTE_ARCHIVE              = $00000020;
  {$EXTERNALSYM FILE_ATTRIBUTE_NORMAL}
  FILE_ATTRIBUTE_NORMAL               = $00000080;
  {$EXTERNALSYM FILE_ATTRIBUTE_TEMPORARY}
  FILE_ATTRIBUTE_TEMPORARY            = $00000100;
  {$EXTERNALSYM FILE_ATTRIBUTE_COMPRESSED}
  FILE_ATTRIBUTE_COMPRESSED           = $00000800;
  {$EXTERNALSYM FILE_ATTRIBUTE_OFFLINE}
  FILE_ATTRIBUTE_OFFLINE              = $00001000;


Donc dans ton cas tu peux essayer en ajoutant, au debut de ta procédure, la ligne :
 
SetFileAttributes(PChar(Dossier), FILE_ATTRIBUTE_DIRECTORY);


Ken@vo

Code, Code, Codec !

http://www.pourflorenceethussein.org


Re : Comment delete des fichiers d'un dossier systeme le 16/05/2005 12:29:14

BenXbox

Salut Kenavo et merci de m'aider pour ce problème,
Donc si j'ai bien compris je doit faire sa :
function EffaceDossier(Dossier : String): Boolean; var FileOpStruct : TShFileOpStruct;
begin
SetFileAttributes(PChar(Dossier), FILE_ATTRIBUTE_DIRECTORY);
FileOpStruct.Wnd := 0;
FileOpStruct.wFunc := FO_DELETE;
FileOpStruct.pFrom := PChar(Dossier);
FileOpStruct.pTo := nil;
FileOpStruct.fFlags := FOF_NOCONFIRMATION or FOF_SILENT;
FileOpStruct.lpszProgressTitle := nil;
Result := ShFileOperation(FileOpStruct) = 0;
end;

J'ai essayer et j'ai toujours le message comme quoi c'est un dossier système.
Merci d'avance.

Mon Site Web : [ Lien ]


Re : Comment delete des fichiers d'un dossier systeme le 16/05/2005 19:18:11

Kenavo
Ah ! M... ! C'est bien l'attribut auquel je pensais !

Serait-il référencé comme dossier système ailleurs ? En utilisant la fonction suivante, tu peux lire les attributs du dossier :
Attribut := GetFileAttributes(PChar(Dossier));

Pas mieux ! Désolé !

Ken@vo

Code, Code, Codec !

http://www.pourflorenceethussein.org


Re : Comment delete des fichiers d'un dossier systeme le 16/05/2005 23:21:31

BenXbox

J'ai pas compris l'histoire du Attribut := GetFileAttributes(PChar(Dossier));

Mon Site Web : [ Lien ]


Re : Comment delete des fichiers d'un dossier systeme le 17/05/2005 09:19:27

Kenavo
C'était pour te permettre de vérifier les attributs du dossier à supprimer avant de faire l'appel à ShFileOperation

Le problème vient sans doute du fait que ton répertoire Cookies estsans doute référencé dans la base de registres comme répertoire spécial: voir clés
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders et
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folder

Tu aurrais peut être intéret à supprimer les cookies sans effacer lerépertoire ! Donc à écrire une fonction VideDossier plutôt queEffaceDossier.

Ken@vo

Code, Code, Codec !



Re : Comment delete des fichiers d'un dossier systeme le 17/05/2005 12:35:04

BenXbox
Et avec la fonction VideDossier, sa peut supprimer les SousDossier ?

Mon Site Web : [ Lien ]


Re : Comment delete des fichiers d'un dossier systeme le 17/05/2005 13:36:24

Kenavo
Faut essayer !

Ken@vo

Code, Code, Codec !



Re : Comment delete des fichiers d'un dossier systeme le 17/05/2005 16:06:36

BenXbox

Le problème c'est que je ne sais pas du tout comment faire, sinon je l'aurais fais :)


Mon Site Web : [ Lien ]


Re : Comment delete des fichiers d'un dossier systeme le 17/05/2005 18:45:25

Kenavo
Bon, on y va !

Le pricipe que je te donne est général, je ne sais pas si il te donnerasatisfaction. Il y a des mystères pour moi autour des cookies !
Le seul truc dont je sois sûr, est que dasns un répertoire \Cookies, il y a un fichier Index.dat qui n'est guère manipulable.

function VideDossier(Dossier : String): Boolean;
var
  FileOpStruct : TShFileOpStruct;
  SearchRec : TSearchRec;
  s : String;
  Resu : Integer;
begin
  S := '';
  Resu := FindFirst(Dossier+'\*.*',faAnyFile,SearchRec);  // recherche tous les fichiers
  While Resu = 0 do
  begin
    if (SearchRec.Name[1]<>'.') and (SearchRec.Name<>'INDEX.DAT') then  // si fichier à éliminer
    s:=s+Dossier+'\'+SearchRec.Name+#0;   // constitution de la liste des fichiers à effacer
    Resu := FindNext(SearchRec);
  end;
  s:=s+#0;
  FindClose(SearchRec);
  SetFileAttributes(PChar(Dossier), FILE_ATTRIBUTE_DIRECTORY);
  FileOpStruct.Wnd := 0;
  FileOpStruct.wFunc := FO_DELETE;
  FileOpStruct.pFrom := PChar(s);  // liste des fichier à effacer
  FileOpStruct.pTo := nil;
  FileOpStruct.fFlags := FOF_NOCONFIRMATION or FOF_SILENT;
  FileOpStruct.lpszProgressTitle := nil;
  Result := ShFileOperation(FileOpStruct) = 0;
end;

A tester !

Ken@vo

Code, Code, Codec !



[Page 1 Page 2 Page 3]
Classé sous : dossier, fichiers, supprimer, delete, fileopstruct

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS