Files
QoSManager/App.xaml.cs
T
2026-04-29 15:29:39 +05:00

69 lines
2.3 KiB
C#

using System;
using System.Threading;
using System.Windows;
using QoSManager.Services;
using QoSManager.Views;
namespace QoSManager
{
public partial class App : Application
{
private readonly LoggingService _loggingService;
private bool _loggingEnabled = true;
public App()
{
_loggingService = new LoggingService();
}
public void SetLoggingEnabled(bool enabled)
{
_loggingEnabled = enabled;
}
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
// Проверка версии Windows
var versionService = new WindowsVersionService();
var windowsInfo = versionService.GetWindowsInfo();
if (!windowsInfo.IsQoSSupported)
{
var warningWindow = new UnsupportedVersionWindow(windowsInfo);
warningWindow.ShowDialog();
// Always exit on unsupported version
Shutdown();
return;
}
// Проверка административных прав
if (!IsAdministrator())
{
CustomMessageBox.Show("Приложение требует административных прав для управления QoS-политиками.",
"QoS Policy Manager", MessageBoxButton.OK, MessageBoxImage.Error);
Shutdown();
return;
}
// Don't log startup here - MainWindow will log after settings are loaded
}
protected override void OnExit(ExitEventArgs e)
{
_loggingService.LogInformation("Приложение закрыто", _loggingEnabled);
_loggingService?.Dispose();
base.OnExit(e);
}
private bool IsAdministrator()
{
var identity = System.Security.Principal.WindowsIdentity.GetCurrent();
var principal = new System.Security.Principal.WindowsPrincipal(identity);
return principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator);
}
}
}