Skip to content

Commit 054f0f2

Browse files
committed
Bug fix
#5725
1 parent 9734767 commit 054f0f2

File tree

3 files changed

+20
-36
lines changed

3 files changed

+20
-36
lines changed

v2rayN/ServiceLib/ViewModels/MainWindowViewModel.cs

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ public class MainWindowViewModel : MyReactiveObject
1414
#region private prop
1515

1616
private CoreHandler _coreHandler;
17+
private bool _isAdministrator { get; set; }
1718

1819
#endregion private prop
1920

@@ -139,17 +140,16 @@ public class MainWindowViewModel : MyReactiveObject
139140
[Reactive]
140141
public int TabMainSelectedIndex { get; set; }
141142

142-
public bool IsAdministrator { get; set; }
143-
144143
#endregion UI
145144

146145
#region Init
147146

148-
public MainWindowViewModel(Func<EViewAction, object?, Task<bool>>? updateView)
147+
public MainWindowViewModel(bool isAdministrator, Func<EViewAction, object?, Task<bool>>? updateView)
149148
{
150149
_config = LazyConfig.Instance.Config;
151150
_noticeHandler = Locator.Current.GetService<NoticeHandler>();
152151
_updateView = updateView;
152+
_isAdministrator = isAdministrator;
153153

154154
MessageBus.Current.Listen<string>(Global.CommandRefreshProfiles).Subscribe(async x => await _updateView?.Invoke(EViewAction.DispatcherRefreshServersBiz, null));
155155

@@ -158,6 +158,16 @@ public MainWindowViewModel(Func<EViewAction, object?, Task<bool>>? updateView)
158158

159159
Init();
160160

161+
_config.uiItem.showInTaskbar = true;
162+
if (_config.tunModeItem.enableTun && _isAdministrator)
163+
{
164+
EnableTun = true;
165+
}
166+
else
167+
{
168+
_config.tunModeItem.enableTun = EnableTun = false;
169+
}
170+
161171
#region WhenAnyValue && ReactiveCommand
162172

163173
this.WhenAnyValue(
@@ -319,8 +329,6 @@ public MainWindowViewModel(Func<EViewAction, object?, Task<bool>>? updateView)
319329
#endregion WhenAnyValue && ReactiveCommand
320330

321331
AutoHideStartup();
322-
323-
_config.uiItem.showInTaskbar = true;
324332
}
325333

326334
private void Init()
@@ -853,12 +861,13 @@ private void DoEnableTun(bool c)
853861
{
854862
_config.tunModeItem.enableTun = EnableTun;
855863
// When running as a non-administrator, reboot to administrator mode
856-
if (EnableTun && !IsAdministrator)
864+
if (EnableTun && !_isAdministrator)
857865
{
858866
_config.tunModeItem.enableTun = false;
859867
RebootAsAdmin();
860868
return;
861869
}
870+
ConfigHandler.SaveConfig(_config);
862871
Reload();
863872
}
864873
}

v2rayN/v2rayN.Desktop/Views/MainWindow.axaml.cs

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,9 @@ public MainWindow()
3434
menuPromotion.Click += menuPromotion_Click;
3535
menuClose.Click += menuClose_Click;
3636

37+
var IsAdministrator = true;//WindowsUtils.IsAdministrator();
3738
MessageBus.Current.Listen<string>(Global.CommandSendSnackMsg).Subscribe(x => DelegateSnackMsg(x));
38-
ViewModel = new MainWindowViewModel(UpdateViewHandler);
39+
ViewModel = new MainWindowViewModel(IsAdministrator, UpdateViewHandler);
3940
Locator.CurrentMutable.RegisterLazySingleton(() => ViewModel, typeof(MainWindowViewModel));
4041

4142
//WindowsHandler.Instance.RegisterGlobalHotkey(_config, OnHotkeyHandler, null);
@@ -114,24 +115,10 @@ public MainWindow()
114115

115116
if (Utils.IsWindows())
116117
{
117-
var IsAdministrator = false;//WindowsUtils.IsAdministrator();
118-
ViewModel.IsAdministrator = IsAdministrator;
119118
this.Title = $"{Utils.GetVersion()} - {(IsAdministrator ? ResUI.RunAsAdmin : ResUI.NotRunAsAdmin)}";
120-
if (_config.tunModeItem.enableTun)
121-
{
122-
if (IsAdministrator)
123-
{
124-
ViewModel.EnableTun = true;
125-
}
126-
else
127-
{
128-
_config.tunModeItem.enableTun = ViewModel.EnableTun = false;
129-
}
130-
}
131119
}
132120
else
133121
{
134-
ViewModel.IsAdministrator = true;
135122
this.Title = $"{Utils.GetVersion()}";
136123
menuRebootAsAdmin.IsVisible = false;
137124
menuSettingsSetUWP.IsVisible = false;

v2rayN/v2rayN/Views/MainWindow.xaml.cs

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,9 @@ public MainWindow()
3636
menuCheckUpdate.Click += MenuCheckUpdate_Click;
3737
menuBackupAndRestore.Click += MenuBackupAndRestore_Click;
3838

39+
var IsAdministrator = WindowsUtils.IsAdministrator();
3940
MessageBus.Current.Listen<string>(Global.CommandSendSnackMsg).Subscribe(x => DelegateSnackMsg(x));
40-
ViewModel = new MainWindowViewModel(UpdateViewHandler);
41+
ViewModel = new MainWindowViewModel(IsAdministrator, UpdateViewHandler);
4142
Locator.CurrentMutable.RegisterLazySingleton(() => ViewModel, typeof(MainWindowViewModel));
4243

4344
WindowsHandler.Instance.RegisterGlobalHotkey(_config, OnHotkeyHandler, null);
@@ -143,21 +144,8 @@ public MainWindow()
143144
}
144145
});
145146

146-
var IsAdministrator = WindowsUtils.IsAdministrator();
147-
ViewModel.IsAdministrator = IsAdministrator;
148147
this.Title = $"{Utils.GetVersion()} - {(IsAdministrator ? ResUI.RunAsAdmin : ResUI.NotRunAsAdmin)}";
149-
if (_config.tunModeItem.enableTun)
150-
{
151-
if (IsAdministrator)
152-
{
153-
ViewModel.EnableTun = true;
154-
}
155-
else
156-
{
157-
_config.tunModeItem.enableTun = ViewModel.EnableTun = false;
158-
}
159-
}
160-
148+
161149
if (!_config.guiItem.enableHWA)
162150
{
163151
RenderOptions.ProcessRenderMode = RenderMode.SoftwareOnly;

0 commit comments

Comments
 (0)