2010-11-18 19 views
1

Je suis nouveau sur C# et je vais créer un outil simple qui a un bouton pour supprimer tous les dossiers dans les documents et les paramètres, mais pas les dossiers de l'administrateur. Est-ce que quelqu'un peut me dire comment je peux faire cela?Supprimer le dossier avec C#

+0

Regardez ici: http://bytes.com/topic/c-sharp/answers/245176-how-delete-folder-has-files – OmerGertel

+3

Comment différencier les "dossiers administrateur" des dossiers normaux? – Oded

+7

Je frémis de penser aux ravages que cela pourrait provoquer. La suppression indiscriminée de dossiers dans "Documents and Settings" est une opération gravement risquée. Vous allez certainement retirer le tapis d'une autre application. –

Répondre

2

Vous pouvez utiliser DirectoryInfo

System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo("your path"); 
if (dir.Exists) 
    dir.Delete(true); 
+1

Et l'exigence d'ignorer les "dossiers administrateur"? – Oded

+0

donc sous les documents et les paramètres j'ai beaucoup de profils ... et il y a quelques dossiers comme administrateur etc, comment puis-je l'écrire que je ne supprime pas le dossier admin ... sry pour l'anglais – Sebastian

+0

si (dir.exists && dir.Name!= "Administrateur") {dir.delete (false)} ?? – Sebastian

-1

Vous pouvez utiliser System.IO.DirectoryInfo puis appeler la méthode Delete(true) pour supprimer récursive tous les dossiers et fichiers dans le dossier spécifié.

MSDN Directory Info

Maintenant, pour ne supprimer les dossiers non-administrateur voulez-vous dire ceux appartenant à l'administrateur ou ceux appartenant à un administrateur. De plus, vous ne serez pas en mesure de supprimer les dossiers que l'utilisateur actuel ne possède pas, de sorte que vous allez obtenir des exceptions de toute façon supprimant aveuglément.

Modifier en réponse à des divers commentaires

Vous pouvez réellement faire un peu itérer sur la DirectorySecurity et FileSecurity (je pense que ce fichier un) pour déterminer le groupe de propriétaires pour le répertoire ou un fichier, et de là déterminer si c'est un administrateur.

+0

Et l'obligation d'ignorer les "dossiers administrateur"? – Oded

+0

J'ai juste accidentellement frappé le mauvais bouton et posté tôt – msarchet

0

Il y a beaucoup d'arguments en cours ici, et les réponses fournies jusqu'ici fonctionneront techniquement . Mais essayons une approche différente ... Pourquoi voulez-vous faire cela? Comme vous l'avez peut-être deviné à ce jour, ce n'est probablement pas une bonne idée. Alors peut-être qu'avec un peu de contexte sur le besoin étant adressé par ce logiciel nous pouvons peut-être fournir des réponses plus utiles?

Editer: Vous avez donc l'intention de vous déplacer sur chaque PC avec une clé USB et de supprimer en masse? Cela ne semble toujours pas une bonne approche. Certains Googling rapide vient d'apparaître this, ce qui peut fonctionner pour vous. La meilleure partie, cela fonctionne à distance. Cela enlèvera la partie "se promener à chaque PC" de votre tâche.

+0

bonjour david, la raison en est que je vais supprimer tous les anciens profils d'utilisateur avec C# ... c'est beaucoup de travail pour le supprimer à la main – Sebastian

+0

@matthias: Je recommande également de consulter ServerFault et SuperUser. Cela ressemble à quelque chose que l'administrateur réseau Windows devrait être capable de faire. (Je suppose qu'il y en a un si nous parlons de nombreux profils et de nombreuses machines, mais même si ce n'est pas le cas, cela ressemble toujours à quelque chose pour lequel un outil/processus existerait déjà.) – David