69 lines
2.3 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|