Automatisation des tâches en C# : 5 outils puissants pour le développeur paresseux

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Pourquoi C# n'est pas réservé qu'aux sites web et aux jeux ?

\n\n

Quand on entend « automatisation », la plupart pensent à Python ou Bash. Et c'est justifié : ils sont légers, scriptés, « pour les pauvres ». Mais que faire si vous êtes un développeur .NET qui ne veut pas apprendre une nouvelle syntaxe pour un seul script ? Ou si votre projet est déjà en C# et que traîner des dépendances Python pour analyser des logs est un enfer ?

\n\n

Bienvenue dans le monde de l'automatisation des tâches en C#. Ce n'est pas simplement « écrire une application console ». C'est un outil complet qui peut interagir avec le système de fichiers, le registre, les objets COM, l'interface graphique et même exécuter des commandes PowerShell. Et tout cela, avec un typage strict, IntelliSense et sans surprises.

\n\n

Dans cet article, nous allons examiner 5 scénarios concrets que vous pourrez appliquer dès aujourd'hui. Pas de blabla – seulement du code et des cas réels.

\n\n

1. Gestion des fichiers : nettoyer les logs, archiver les projets

\n\n

La douleur la plus fréquente de tout développeur : les dossiers de logs qui gonflent, les fichiers inutiles et la nécessité de sauvegarder les builds. L'automatisation C# des opérations sur les fichiers se fait en 5 lignes.

\n\n

Exemple : suppression des fichiers vieux de plus de N jours

\n\n
using System.IO;\n\nstring path = @"C:\\Logs\\";\nint daysOld = 30;\n\nvar oldFiles = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories)\n    .Where(f => File.GetLastWriteTime(f) < DateTime.Now.AddDays(-daysOld));\n\nforeach (var file in oldFiles)\n{\n    File.Delete(file);\n    Console.WriteLine($"Supprimé : {file}");\n}\n
\n\n

Remplacez SearchOption.AllDirectories par TopDirectoryOnly – et le script ne fonctionne que dans le répertoire racine. Ajoutez un try-catch – et il est prêt pour la production.

\n\n

Exemple : archivage d'un dossier avec la date

\n\n
using System.IO.Compression;\n\nstring source = @"C:\\Projects\\MyApp\\bin\\Release";\nstring zipPath = $@"C:\\Backups\\MyApp_{DateTime.Now:yyyy-MM-dd}.zip";\n\nZipFile.CreateFromDirectory(source, zipPath);\nConsole.WriteLine($"Archive créée : {zipPath}");\n
\n\n

Ce code peut être attaché au Planificateur de tâches Windows (Task Scheduler) – et vous oubliez les sauvegardes manuelles. L'automatisation en C# en action.

\n\n

2. Gestion du registre : modifier les paramètres système

\n\n

Parfois, il est nécessaire d'ajouter une clé de registre pour tous les utilisateurs ou, au contraire, de supprimer une entrée malveillante. C# via Microsoft.Win32 le fait en toute sécurité et sans fichiers BAT.

\n\n
using Microsoft.Win32;\n\n// Définition d'une valeur\nRegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\\MyCompany", true);\nif (key == null)\n{\n    key = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\\MyCompany");\n}\nkey.SetValue("InstallPath", @"C:\\Program Files\\MyApp");\nkey.Close();\n
\n\n

Pour HKEY_CURRENT_USER, utilisez Registry.CurrentUser. Important : pour HKLM, des droits d'administrateur sont nécessaires – exécutez l'application en tant qu'administrateur.

\n\n

3. PowerShell depuis C# : fusionner deux mondes

\n\n

Parfois, il est plus simple d'écrire une commande PowerShell que de l'implémenter en C#. Par exemple, obtenir la liste des programmes installés ou redémarrer un service. La bibliothèque System.Management.Automation permet d'effectuer du scripting en C# en appelant des commandes PS.

\n\n

Installez le package NuGet :

\n
Install-Package Microsoft.PowerShell.SDK
\n\n

Exemple : redémarrage d'un service

\n\n
using System.Management.Automation;\n\nusing (PowerShell ps = PowerShell.Create())\n{\n    ps.AddScript("Restart-Service -Name 'Spooler' -Force");\n    var results = ps.Invoke();\n    \n    if (ps.HadErrors)\n    {\n        foreach (var error in ps.Streams.Error)\n        {\n            Console.WriteLine($"Erreur : {error.Exception.Message}");\n        }\n    }\n    else\n    {\n        Console.WriteLine("Service redémarré.");\n    }\n}\n
\n\n

Ainsi, vous obtenez la flexibilité de PowerShell et la sécurité de C#. Idéal pour l'automatisation Windows au c

Blogs

Book Recommendations