From 5f002ff524ae88d6d5a0c57cc2e1bd6cec8f080d Mon Sep 17 00:00:00 2001 From: zggsong Date: Wed, 31 Jan 2024 14:40:34 +0800 Subject: [PATCH] fix: Fixed the issue that the manual administrator permission startup tray program displayed the administrator status incorrectly --- STranslate.Util/CommonUtil.cs | 13 +++++++++++++ STranslate/App.xaml.cs | 18 +----------------- STranslate/ViewModels/NotifyIconViewModel.cs | 2 +- STranslate/Views/MainView.xaml.cs | 2 +- 4 files changed, 16 insertions(+), 19 deletions(-) diff --git a/STranslate.Util/CommonUtil.cs b/STranslate.Util/CommonUtil.cs index 463ae214..27b39cd6 100644 --- a/STranslate.Util/CommonUtil.cs +++ b/STranslate.Util/CommonUtil.cs @@ -4,6 +4,7 @@ using System.Diagnostics; using System.Linq; using System.Runtime.InteropServices; +using System.Security.Principal; using System.Text; using System.Windows; using System.Windows.Controls; @@ -398,6 +399,18 @@ public static System.Windows.Point GetMousePositionWindowsForms() return new System.Windows.Point(ms.X / dpiScale, ms.Y / dpiScale); } + /// + /// 是否为管理员权限 + /// + /// + public static bool IsUserAdministrator() + { + WindowsIdentity identity = WindowsIdentity.GetCurrent(); + WindowsPrincipal principal = new(identity); + + return principal.IsInRole(WindowsBuiltInRole.Administrator); + } + #endregion Other } } diff --git a/STranslate/App.xaml.cs b/STranslate/App.xaml.cs index f65c6eb6..b1ae88c8 100644 --- a/STranslate/App.xaml.cs +++ b/STranslate/App.xaml.cs @@ -7,7 +7,6 @@ using System.Diagnostics; using System.IO; using System.Reflection; -using System.Security.Principal; using System.Threading.Tasks; using System.Windows; using System.Windows.Threading; @@ -76,28 +75,13 @@ protected override void OnExit(ExitEventArgs e) private bool NeedAdministrator() { - // 初始化管理员缓存 - Current.Properties["admin"] = false; - // 加载配置 var isRole = Singleton.Instance.CurrentConfig?.NeedAdministrator ?? false; if (!isRole) return false; - // 更新管理员缓存 - bool role = IsUserAdministrator(); - Current.Properties["admin"] = role; - - return !role; - } - - private bool IsUserAdministrator() - { - WindowsIdentity identity = WindowsIdentity.GetCurrent(); - WindowsPrincipal principal = new WindowsPrincipal(identity); - - return principal.IsInRole(WindowsBuiltInRole.Administrator); + return !CommonUtil.IsUserAdministrator(); } private bool TryRunAsAdministrator() diff --git a/STranslate/ViewModels/NotifyIconViewModel.cs b/STranslate/ViewModels/NotifyIconViewModel.cs index 743f2a59..4ad82752 100644 --- a/STranslate/ViewModels/NotifyIconViewModel.cs +++ b/STranslate/ViewModels/NotifyIconViewModel.cs @@ -51,7 +51,7 @@ public NotifyIconViewModel() public void UpdateToolTip(string msg = "") { - _ = bool.TryParse(Application.Current.Properties["admin"]?.ToString(), out bool isAdmin); + bool isAdmin = CommonUtil.IsUserAdministrator(); string toolTipFormat = isAdmin ? "STranslate {0}\r\n[Administrator] #\r\n{1}" : "STranslate {0} #\r\n{1}"; diff --git a/STranslate/Views/MainView.xaml.cs b/STranslate/Views/MainView.xaml.cs index d3cedfa9..9421523d 100644 --- a/STranslate/Views/MainView.xaml.cs +++ b/STranslate/Views/MainView.xaml.cs @@ -96,7 +96,7 @@ protected override void OnSourceInitialized(EventArgs e) { Hide(); - _ = bool.TryParse(Application.Current.Properties["admin"]?.ToString(), out bool isAdmin); + bool isAdmin = CommonUtil.IsUserAdministrator(); string toolTipFormat = isAdmin ? "STranslate[Admin] {0} started" : "STranslate {0} started";