Added check if the software was started with admin rights.

This commit is contained in:
2026-06-01 15:49:14 +02:00
parent 27299fc8e7
commit e8df6042d2
4 changed files with 49 additions and 12 deletions
+12 -9
View File
@@ -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
+3 -2
View File
@@ -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.
+4 -1
View File
@@ -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:
@@ -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;
}
}
}
}