From e8df6042d254d1bbb3cb158ceaa6f6a7cb81755f Mon Sep 17 00:00:00 2001 From: Johannes Rest Date: Mon, 1 Jun 2026 15:49:14 +0200 Subject: [PATCH] Added check if the software was started with admin rights. --- Dokumentation.md | 21 ++++++++------ Installation.md | 5 ++-- README.md | 5 +++- src/BizTalkPlatformManagementTool/Program.cs | 30 ++++++++++++++++++++ 4 files changed, 49 insertions(+), 12 deletions(-) diff --git a/Dokumentation.md b/Dokumentation.md index 15d07e1..e92d8a8 100644 --- a/Dokumentation.md +++ b/Dokumentation.md @@ -25,21 +25,23 @@ Das BizTalk Platform Management Tool unterstützt kontrollierte Wartungsfenster ## UI Workflow -1. BizTalk-Servernamen eintragen. -2. Ausgabeverzeichnis wählen. -3. **Dry run** aktiviert lassen. -4. Mit **Diagnose** den Zugriff auf `root\MicrosoftBizTalkServer` prüfen. -5. Mit **Snapshot Before** die Datei `before.json` erzeugen. -6. Mit **Shutdown** den Plan `shutdown-plan.json` erzeugen und prüfen. -7. **Dry run** erst deaktivieren, wenn der Plan korrekt ist. -8. Nach der Wartung mit **Restore** aus `before.json` wiederherstellen. -9. Mit **Snapshot After** und **Compare** die Umgebung validieren. +1. Anwendung mit Administratorrechten starten. +2. BizTalk-Servernamen eintragen. +3. Ausgabeverzeichnis wählen. +4. **Dry run** aktiviert lassen. +5. Mit **Diagnose** den Zugriff auf `root\MicrosoftBizTalkServer` prüfen. +6. Mit **Snapshot Before** die Datei `before.json` erzeugen. +7. Mit **Shutdown** den Plan `shutdown-plan.json` erzeugen und prüfen. +8. **Dry run** erst deaktivieren, wenn der Plan korrekt ist. +9. Nach der Wartung mit **Restore** aus `before.json` wiederherstellen. +10. Mit **Snapshot After** und **Compare** die Umgebung validieren. Die Statusanzeige rechts im Kopfbereich bewertet die Host-Instance-Zustaende des letzten Snapshots und zeigt `Started`, `Stopped`, `Partial` oder `Unknown`. **Clear** leert die sichtbaren Ergebnis- und Log-Grids, loescht aber keine Dateien. **Close** beendet die Anwendung. ## Sicherheitsdesign - Dry-run ist standardmäßig aktiviert. +- Beim Start wird geprüft, ob die Anwendung mit Administratorrechten läuft. Ohne erhöhte Rechte wird eine Fehlermeldung angezeigt und die Anwendung beendet. - Echte Shutdown-/Restore-Aktionen verlangen bei deaktiviertem Dry-run eine zusätzliche Bestätigung. - Jede Operation schreibt Einträge in das sichtbare Operation Log. - Zusätzlich wird neben der EXE eine tägliche Logdatei `BizTalkPlatformManagementTool-yyyy-MM-dd.log` geschrieben. @@ -99,4 +101,5 @@ Snapshot- und Plan-JSON-Dateien werden als UTF-8 ohne BOM geschrieben. Beim Lade - Windows Server oder Administrationshost mit .NET Framework 4.6.1 - BizTalk Server 2020 oder installierte BizTalk Administration Tools - Berechtigungen auf den WMI-Namespace `root\MicrosoftBizTalkServer` +- Lokale Administratorrechte und Start der Anwendung mit **Als Administrator ausführen** - Visual Studio mit .NET Framework 4.6.1 Developer Pack für Builds diff --git a/Installation.md b/Installation.md index 45e640f..2985f19 100644 --- a/Installation.md +++ b/Installation.md @@ -8,6 +8,7 @@ - Für Builds: Visual Studio mit .NET Framework 4.6.1 Developer Pack - Zugriff auf den WMI-Namespace `root\MicrosoftBizTalkServer` - Ausreichende Rechte zum Lesen und Ändern von BizTalk-Artefakten +- Lokale Administratorrechte und Start der EXE mit **Als Administrator ausführen** - Schreibrechte im Verzeichnis der EXE für die tägliche Logdatei ## Build @@ -22,13 +23,13 @@ 1. Den Release-Ordner auf einen BizTalk-Server oder einen Administrationshost kopieren. 2. Sicherstellen, dass der ausführende Benutzer WMI-Zugriff auf `root\MicrosoftBizTalkServer` hat. -3. `BizTalkPlatformManagementTool.exe` starten. +3. `BizTalkPlatformManagementTool.exe` mit **Als Administrator ausführen** starten. 4. Als Ausgabeverzeichnis einen Ordner wählen, in dem Plan-, Snapshot- und Report-Dateien abgelegt werden dürfen. 5. Prüfen, dass im EXE-Verzeichnis `BizTalkPlatformManagementTool-yyyy-MM-dd.log` geschrieben werden kann. Logs werden für maximal fünf Tage vorgehalten. ## Erster Funktionstest -1. Anwendung starten. +1. Anwendung mit **Als Administrator ausführen** starten. 2. Zielserver eintragen oder den vorgeschlagenen lokalen Server verwenden. 3. **Dry run** aktiviert lassen. 4. **Diagnose** ausführen. diff --git a/README.md b/README.md index d75cf80..b6d1208 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ WinForms tool for controlled Microsoft BizTalk Server 2020 platform operations d - Host instance handling for the selected BizTalk server - Dry-run mode enabled by default - WMI access through `root\MicrosoftBizTalkServer` +- Startup check for administrator rights - Detailed operation logging in the GUI and daily rolling log files next to the executable - Environment status indicator based on host instance state - Clear and Close actions in the main toolbar @@ -27,7 +28,7 @@ WinForms tool for controlled Microsoft BizTalk Server 2020 platform operations d ## Safe Usage -1. Start the app on a BizTalk server or a management host with WMI access. +1. Start the app with **Run as administrator** on a BizTalk server or a management host with WMI access. 2. Keep **Dry run** enabled. 3. Click **Diagnose** to verify WMI access. 4. Click **Snapshot Before**. @@ -38,6 +39,8 @@ WinForms tool for controlled Microsoft BizTalk Server 2020 platform operations d The environment indicator shows `Started`, `Stopped`, `Partial` or `Unknown` from the most recent snapshot. `Clear` removes the visible status and operation log grids; it does not delete files. +The application checks administrator rights during startup. If it is not elevated, it shows an error message and exits because BizTalk WMI operations require an elevated administrator process. + ## Operation Order Shutdown: diff --git a/src/BizTalkPlatformManagementTool/Program.cs b/src/BizTalkPlatformManagementTool/Program.cs index e25e27a..4882bd6 100644 --- a/src/BizTalkPlatformManagementTool/Program.cs +++ b/src/BizTalkPlatformManagementTool/Program.cs @@ -1,4 +1,5 @@ using System; +using System.Security.Principal; using System.Windows.Forms; using BizTalkPlatformManagementTool.Ui; @@ -11,7 +12,36 @@ namespace BizTalkPlatformManagementTool { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); + + if (!IsRunningAsAdministrator()) + { + MessageBox.Show( + "BizTalk Platform Management Tool must be started with administrator rights.\r\n\r\n" + + "Please close the application and start it again with 'Run as administrator'. " + + "Without elevated rights, BizTalk WMI operations in root\\MicrosoftBizTalkServer will fail.", + "Administrator Rights Required", + MessageBoxButtons.OK, + MessageBoxIcon.Error); + return; + } + Application.Run(new MainForm()); } + + private static bool IsRunningAsAdministrator() + { + try + { + using (var identity = WindowsIdentity.GetCurrent()) + { + var principal = new WindowsPrincipal(identity); + return principal.IsInRole(WindowsBuiltInRole.Administrator); + } + } + catch + { + return false; + } + } } }