mirror of
https://mirror.ghproxy.com/https://github.com/StarCitizenToolBox/app.git
synced 2024-12-22 19:53:43 +08:00
回滚动态UAC
This commit is contained in:
parent
2594f85f25
commit
b6f0728e2c
@ -17,7 +17,7 @@ import 'package:window_manager/window_manager.dart';
|
||||
import '../base/ui.dart';
|
||||
|
||||
class AppConf {
|
||||
static const String appVersion = "2.9.13 Beta";
|
||||
static const String appVersion = "2.9.14 Beta";
|
||||
static const int appVersionCode = 28;
|
||||
static const String appVersionDate = "2023-11-11";
|
||||
|
||||
@ -40,8 +40,6 @@ class AppConf {
|
||||
|
||||
static bool offlineMode = false;
|
||||
|
||||
static bool isRunningAdmin = false;
|
||||
|
||||
static late final WindowsDeviceInfo windowsDeviceInfo;
|
||||
|
||||
static Color? colorBackground;
|
||||
@ -83,7 +81,6 @@ class AppConf {
|
||||
}
|
||||
dPrint("---- rust bridge inited -----");
|
||||
await SystemHelper.initPowershellPath();
|
||||
isRunningAdmin = await globalUIModel.checkAdmin();
|
||||
|
||||
/// init defaultColor
|
||||
colorBackground = HexColor("#132431").withOpacity(.75);
|
||||
|
@ -1,6 +1,5 @@
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:starcitizen_doctor/common/conf.dart';
|
||||
import 'package:starcitizen_doctor/common/utils/base_utils.dart';
|
||||
|
||||
class SystemHelper {
|
||||
@ -44,7 +43,7 @@ class SystemHelper {
|
||||
}
|
||||
|
||||
static Future<String> addNvmePatch() async {
|
||||
var result = await powershellAdminRun([
|
||||
var result = await Process.run(powershellPath, [
|
||||
'New-ItemProperty',
|
||||
"-Path",
|
||||
"\"HKLM:\\SYSTEM\\CurrentControlSet\\Services\\stornvme\\Parameters\\Device\"",
|
||||
@ -60,7 +59,7 @@ class SystemHelper {
|
||||
|
||||
static doRemoveNvmePath() async {
|
||||
try {
|
||||
var result = await powershellAdminRun([
|
||||
var result = await Process.run(powershellPath, [
|
||||
"Clear-ItemProperty",
|
||||
"-Path",
|
||||
"\"HKLM:\\SYSTEM\\CurrentControlSet\\Services\\stornvme\\Parameters\\Device\"",
|
||||
@ -202,40 +201,4 @@ foreach ($adapter in $adapterMemory) {
|
||||
} catch (_) {}
|
||||
return totalSize;
|
||||
}
|
||||
|
||||
static Future<ProcessResult> powershellAdminRun(List<String> args) async {
|
||||
// 创建 PowerShell 脚本文件
|
||||
final scriptContent = """
|
||||
${args.join(' ')}
|
||||
""";
|
||||
|
||||
// 将脚本内容写入临时文件
|
||||
final scriptFile =
|
||||
File('${AppConf.applicationSupportDir}\\temp\\psh_script.ps1');
|
||||
if (await scriptFile.exists()) {
|
||||
await scriptFile.delete();
|
||||
}
|
||||
if (!await scriptFile.exists()) {
|
||||
await scriptFile.create(recursive: true);
|
||||
}
|
||||
await scriptFile.writeAsString(scriptContent);
|
||||
|
||||
List<String> command = [
|
||||
'Start-Process',
|
||||
'powershell.exe',
|
||||
'-Verb RunAs',
|
||||
'-ArgumentList',
|
||||
"'-NoProfile','-NonInteractive','-ExecutionPolicy','Bypass','-File','${scriptFile.absolute.path}'",
|
||||
'-Wait',
|
||||
'-PassThru '
|
||||
];
|
||||
|
||||
final r = await Process.run(
|
||||
'powershell.exe',
|
||||
command,
|
||||
runInShell: true,
|
||||
);
|
||||
await scriptFile.delete();
|
||||
return r;
|
||||
}
|
||||
}
|
||||
|
@ -1,15 +1,12 @@
|
||||
// ignore_for_file: use_build_context_synchronously
|
||||
|
||||
import 'dart:async';
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:hexcolor/hexcolor.dart';
|
||||
import 'package:hive/hive.dart';
|
||||
|
||||
import 'base/ui_model.dart';
|
||||
import 'common/conf.dart';
|
||||
import 'common/helper/system_helper.dart';
|
||||
import 'ui/settings/upgrade_dialog_ui.dart';
|
||||
import 'ui/settings/upgrade_dialog_ui_model.dart';
|
||||
|
||||
@ -51,30 +48,6 @@ class AppGlobalUIModel extends BaseUIModel {
|
||||
return false;
|
||||
}
|
||||
|
||||
Future<bool> checkAdmin() async {
|
||||
const checkAdmin =
|
||||
r"if ((New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { exit 0 } else { exit 1 }";
|
||||
final r = await Process.run(SystemHelper.powershellPath, [checkAdmin]);
|
||||
dPrint("code == ${r.exitCode} msg == ${r.stdout} err = ${r.stderr}");
|
||||
if (r.exitCode == 0) {
|
||||
return true;
|
||||
} else {
|
||||
if (!AppConf.isMSE) {
|
||||
await _runAsAdmin();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
_runAsAdmin() async {
|
||||
final box = await Hive.openBox("app_conf");
|
||||
await box.close();
|
||||
await Process.run(SystemHelper.powershellPath,
|
||||
["Start-Process '${Platform.resolvedExecutable}' -Verb RunAs"]);
|
||||
await Future.delayed(const Duration(seconds: 2));
|
||||
exit(0);
|
||||
}
|
||||
|
||||
checkActivityThemeColor() {
|
||||
if (activityThemeColorTimer != null) {
|
||||
activityThemeColorTimer?.cancel();
|
||||
|
@ -162,9 +162,6 @@ class HomeUIModel extends BaseUIModel {
|
||||
VoidCallback? doCheck() {
|
||||
if (isChecking) return null;
|
||||
return () async {
|
||||
if (!AppConf.isRunningAdmin) {
|
||||
await showToast(context!, "因微软商店版本权限限制,若功能异常请 关闭盒子,右键 '以管理员身份运行'。");
|
||||
}
|
||||
isChecking = true;
|
||||
lastScreenInfo = "正在分析...";
|
||||
await _statCheck();
|
||||
@ -299,8 +296,7 @@ class HomeUIModel extends BaseUIModel {
|
||||
return;
|
||||
case "no_live_path":
|
||||
try {
|
||||
SystemHelper.powershellAdminRun(
|
||||
['New-Item -ItemType Directory -Path "${item.value}" -Force']);
|
||||
await Directory(item.value).create(recursive: true);
|
||||
showToast(context!, "创建文件夹成功,请尝试继续下载游戏!");
|
||||
checkResult?.remove(item);
|
||||
notifyListeners();
|
||||
@ -329,8 +325,8 @@ class HomeUIModel extends BaseUIModel {
|
||||
final Map eacJson = json.decode(utf8.decode(eacJsonData));
|
||||
final eacID = eacJson["productid"];
|
||||
try {
|
||||
var result = await SystemHelper.powershellAdminRun(
|
||||
["${item.value}\\EasyAntiCheat_EOS_Setup.exe", "install", eacID]);
|
||||
var result = await Process.run(
|
||||
"${item.value}\\EasyAntiCheat_EOS_Setup.exe", ["install", eacID]);
|
||||
dPrint("${item.value}\\EasyAntiCheat_EOS_Setup.exe install $eacID");
|
||||
if (result.stderr == "") {
|
||||
showToast(context!, "修复成功,请尝试启动游戏。(若问题无法解决,请使用工具箱的 《重装 EAC》)");
|
||||
@ -370,9 +366,6 @@ class HomeUIModel extends BaseUIModel {
|
||||
showToast(context!, "该功能需要一个有效的安装位置");
|
||||
return;
|
||||
}
|
||||
if (!AppConf.isRunningAdmin) {
|
||||
await showToast(context!, "因微软商店版本权限限制,若功能异常请 关闭盒子,右键 '以管理员身份运行'。");
|
||||
}
|
||||
showDialog(
|
||||
context: context!,
|
||||
dismissWithEsc: false,
|
||||
@ -387,9 +380,6 @@ class HomeUIModel extends BaseUIModel {
|
||||
showToast(context!, "该功能需要一个有效的安装位置");
|
||||
return;
|
||||
}
|
||||
if (!AppConf.isRunningAdmin) {
|
||||
await showToast(context!, "因微软商店版本权限限制,若功能异常请 关闭盒子,右键 '以管理员身份运行'。");
|
||||
}
|
||||
AnalyticsApi.touch("performance_launch");
|
||||
BaseUIContainer(
|
||||
uiCreate: () => PerformanceUI(),
|
||||
|
@ -211,9 +211,6 @@ class ToolsUIModel extends BaseUIModel {
|
||||
showToast(context!, "该功能需要一个有效的游戏安装目录");
|
||||
return;
|
||||
}
|
||||
if (!AppConf.isRunningAdmin) {
|
||||
await showToast(context!, "因微软商店版本权限限制,若功能异常请 关闭盒子,右键 '以管理员身份运行'。");
|
||||
}
|
||||
working = true;
|
||||
try {
|
||||
final eacPath = "$scInstalledPath\\EasyAntiCheat";
|
||||
@ -354,10 +351,6 @@ class ToolsUIModel extends BaseUIModel {
|
||||
"P4k 是星际公民的核心游戏文件,高达近 100GB,盒子提供的离线下载是为了帮助一些p4k文件下载超级慢的用户。"
|
||||
"\n\n接下来会弹窗询问您保存位置(可以选择星际公民文件夹也可以选择别处),下载完成后请确保 P4K 文件夹位于 LIVE 文件夹内,之后使用星际公民启动器校验更新即可。");
|
||||
|
||||
if (!AppConf.isRunningAdmin) {
|
||||
await showToast(context!, "因微软商店版本权限限制,若功能异常请 关闭盒子,右键 '以管理员身份运行'。");
|
||||
}
|
||||
|
||||
AnalyticsApi.touch("p4k_download");
|
||||
final r = await showDialog(
|
||||
context: context!,
|
||||
|
@ -126,8 +126,9 @@ msix_config:
|
||||
publisher_display_name: xkeyC Studio
|
||||
identity_name: 56575xkeyC.MSE
|
||||
publisher: CN=B54C897B-C263-4680-B6AB-4913C603DF87
|
||||
msix_version: 2.9.13.0
|
||||
msix_version: 2.9.14.0
|
||||
logo_path: ./assets/app_logo.png
|
||||
capabilities: internetClient
|
||||
capabilities: internetClient,allowElevation
|
||||
languages: zh-cn
|
||||
windows_build_args: --dart-define="MSE=true"
|
||||
windows_build_args: --dart-define="MSE=true"
|
||||
store: true
|
@ -16,6 +16,8 @@ add_executable(${BINARY_NAME} WIN32
|
||||
"runner.exe.manifest"
|
||||
)
|
||||
|
||||
SET_TARGET_PROPERTIES(${BINARY_NAME} PROPERTIES LINK_FLAGS "/MANIFESTUAC:\"level='requireAdministrator' uiAccess='false'\" /SUBSYSTEM:WINDOWS")
|
||||
|
||||
# Apply the standard set of build settings. This can be removed for applications
|
||||
# that need different build settings.
|
||||
apply_standard_settings(${BINARY_NAME})
|
||||
|
Loading…
Reference in New Issue
Block a user