add restart as admin

This commit is contained in:
qhy040404
2023-12-27 10:44:10 +08:00
parent d138d856e4
commit b106fe4729
3 changed files with 57 additions and 8 deletions

View File

@@ -1571,6 +1571,12 @@
<data name="ViewModelSettingGeetestCustomUrlSucceed" xml:space="preserve">
<value>无感验证复合 Url 配置成功</value>
</data>
<data name="ViewModelSettingNotRunningInElevatedMode" xml:space="preserve">
<value>当前以用户身份运行</value>
</data>
<data name="ViewModelSettingRunningInElevatedMode" xml:space="preserve">
<value>当前以管理员身份运行</value>
</data>
<data name="ViewModelSettingSetDataFolderSuccess" xml:space="preserve">
<value>设置数据目录成功,重启以应用更改</value>
</data>
@@ -2229,7 +2235,7 @@
<value>创建</value>
</data>
<data name="ViewPageSettingCreateDesktopShortcutDescription" xml:space="preserve">
<value>在桌面上创建默认以管理员方式启动的快捷方式</value>
<value>在桌面上创建默认以管理员身份启动的快捷方式</value>
</data>
<data name="ViewPageSettingCreateDesktopShortcutHeader" xml:space="preserve">
<value>创建快捷方式</value>
@@ -2273,6 +2279,15 @@
<data name="ViewPageSettingDeviceIpHeader" xml:space="preserve">
<value>设备 IP</value>
</data>
<data name="ViewPageSettingElevatedModeDescription" xml:space="preserve">
<value>管理员模式会影响部分功能的可用性</value>
</data>
<data name="ViewPageSettingElevatedModeHeader" xml:space="preserve">
<value>管理员模式</value>
</data>
<data name="ViewPageSettingElevatedModeRestartAction" xml:space="preserve">
<value>以管理员身份重启</value>
</data>
<data name="ViewPageSettingEmptyHistoryVisibleDescription" xml:space="preserve">
<value>在祈愿记录页面显示或隐藏无记录的历史祈愿活动</value>
</data>

View File

@@ -181,14 +181,26 @@
HeaderIcon="{shcm:FontIcon Glyph=&#xE776;}"
IsClickEnabled="True"/>
<TextBlock Style="{StaticResource SettingsSectionHeaderTextBlockStyle}" Text="{shcm:ResourceString Name=ViewPageSettingShellExperienceHeader}"/>
<cwc:SettingsCard
ActionIconToolTip="{shcm:ResourceString Name=ViewPageSettingCreateDesktopShortcutAction}"
Command="{Binding CreateDesktopShortcutCommand}"
Description="{shcm:ResourceString Name=ViewPageSettingCreateDesktopShortcutDescription}"
Header="{shcm:ResourceString Name=ViewPageSettingCreateDesktopShortcutHeader}"
<TextBlock Style="{StaticResource SettingsSectionHeaderTextBlockStyle}" Text="{shcm:ResourceString Name=ViewPageSettingElevatedModeHeader}"/>
<cwc:SettingsExpander
Description="{shcm:ResourceString Name=ViewPageSettingElevatedModeDescription}"
Header="{Binding ElevatedModeHeader}"
HeaderIcon="{shcm:FontIcon Glyph=&#xE7EF;}"
IsClickEnabled="True"/>
IsExpanded="True">
<Button
Command="{Binding RestartAsElevatedCommand}"
Content="{shcm:ResourceString Name=ViewPageSettingElevatedModeRestartAction}"
IsEnabled="{Binding HutaoOptions.IsElevated, Converter={StaticResource BoolNegationConverter}}"
Style="{ThemeResource SettingButtonStyle}"/>
<cwc:SettingsExpander.Items>
<cwc:SettingsCard
ActionIconToolTip="{shcm:ResourceString Name=ViewPageSettingCreateDesktopShortcutAction}"
Command="{Binding CreateDesktopShortcutCommand}"
Description="{shcm:ResourceString Name=ViewPageSettingCreateDesktopShortcutDescription}"
Header="{shcm:ResourceString Name=ViewPageSettingCreateDesktopShortcutHeader}"
IsClickEnabled="True"/>
</cwc:SettingsExpander.Items>
</cwc:SettingsExpander>
<TextBlock Style="{StaticResource SettingsSectionHeaderTextBlockStyle}" Text="{shcm:ResourceString Name=ViewPageSettingApperanceHeader}"/>
<cwc:SettingsCard

View File

@@ -25,6 +25,7 @@ using Snap.Hutao.ViewModel.Guide;
using Snap.Hutao.Web.Hoyolab;
using Snap.Hutao.Web.Hutao;
using Snap.Hutao.Web.Response;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Runtime.InteropServices;
@@ -130,6 +131,13 @@ internal sealed partial class SettingViewModel : Abstraction.ViewModel
set => LocalSetting.Set(SettingKeys.IsAllocConsoleDebugModeEnabled, value);
}
public string ElevatedModeHeader
{
get => HutaoOptions.IsElevated
? SH.ViewModelSettingRunningInElevatedMode
: SH.ViewModelSettingNotRunningInElevatedMode;
}
protected override async ValueTask<bool> InitializeUIAsync()
{
CacheFolderView = new(taskContext, runtimeOptions.LocalCache);
@@ -281,4 +289,18 @@ internal sealed partial class SettingViewModel : Abstraction.ViewModel
infoBarService.Warning(SH.ViewModelSettingCreateDesktopShortcutFailed);
}
}
[Command("RestartAsElevatedCommand")]
private void RestartAsElevated()
{
ProcessStartInfo info = new()
{
FileName = $"shell:AppsFolder\\{runtimeOptions.FamilyName}!App",
UseShellExecute = true,
Verb = "runas",
};
Process.Start(info);
Process.GetCurrentProcess().Kill();
}
}