Aufgabenautomatisierung mit C#: 5 leistungsstarke Tools für den faulen Entwickler

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Warum C# nicht nur für Websites und Spiele ist?

\n\n

Wenn man „Automatisierung“ hört, denken die meisten an Python oder Bash. Und das zu Recht: Sie sind leicht, skriptbasiert, „für Arme“. Aber was, wenn Sie ein .NET-Entwickler sind, der keine neue Syntax für ein einziges Skript lernen möchte? Oder Ihr Projekt läuft bereits auf C# und Python-Abhängigkeiten nur zum Parsen von Logs mitzuschleppen, ist die Hölle?

\n\n

Willkommen in der Welt der Aufgabenautomatisierung mit C#. Das ist nicht nur „eine Konsolenanwendung schreiben“. Es ist ein vollwertiges Werkzeug, das mit dem Dateisystem, der Registry, COM-Objekten, der GUI arbeiten und sogar PowerShell-Befehle ausführen kann. Und das alles – mit strenger Typisierung, IntelliSense und ohne Überraschungen.

\n\n

In diesem Artikel betrachten wir 5 konkrete Szenarien, die Sie noch heute anwenden können. Kein Blabla – nur Code und echte Anwendungsfälle.

\n\n

1. Dateiverwaltung: Logs bereinigen, Projekte archivieren

\n\n

Der häufigste Schmerzpunkt eines jeden Entwicklers sind überquellende Ordner mit Logs, Junk-Dateien und die Notwendigkeit, Builds zu sichern. C# Automatisierung von Dateioperationen ist in 5 Zeilen erledigt.

\n\n

Beispiel: Löschen von Dateien, die älter als N Tage sind

\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($"Gelöscht: {file}");\n}\n
\n\n

Ändern Sie SearchOption.AllDirectories auf TopDirectoryOnly – und das Skript arbeitet nur im Stammverzeichnis. Fügen Sie try-catch hinzu – und es ist bereit für die Produktion.

\n\n

Beispiel: Ordner mit Datum archivieren

\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($"Archiv erstellt: {zipPath}");\n
\n\n

Diesen Code können Sie an die Windows-Aufgabenplanung (Task Scheduler) hängen – und manuelle Backups vergessen. Automatisierung mit C# in Aktion.

\n\n

2. Arbeiten mit der Registry: Systemeinstellungen ändern

\n\n

Manchmal muss man einen Registrierungsschlüssel für alle Benutzer setzen oder im Gegenteil einen Viren-Eintrag löschen. C# macht dies über Microsoft.Win32 sicher und ohne BAT-Dateien.

\n\n
using Microsoft.Win32;\n\n// Wert setzen\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

Für HKEY_CURRENT_USER verwenden Sie Registry.CurrentUser. Wichtig: Für HKML werden Administratorrechte benötigt – starten Sie die Anwendung als Administrator.

\n\n

3. PowerShell aus C#: Zwei Welten vereinen

\n\n

Manchmal ist es einfacher, einen PowerShell-Befehl zu schreiben, als ihn in C# zu implementieren. Zum Beispiel, um eine Liste installierter Programme zu erhalten oder einen Dienst neu zu starten. Die Bibliothek System.Management.Automation ermöglicht Scripting mit C# unter Verwendung von PS-Befehlen.

\n\n

Installieren Sie das NuGet-Paket:

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

Beispiel: Dienst neu starten

\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($"Fehler: {error.Exception.Message}");\n        }\n    }\n    else\n    {\n        Console.WriteLine("Dienst neu gestartet.");\n    }\n}\n
\n\n

Auf diese Weise erhalten Sie die Flexibilität von PowerShell und die Sicherheit von C#. Ideal für die Windows-Automatisierung im Un

Blogs

Buchempfehlungen