1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- import 'dart:io';
- import 'package:process_run/shell.dart';
- import 'package:path/path.dart' as path;
- import 'package:naiyouwl/app/const/const.dart';
- import 'package:naiyouwl/app/utils/logger.dart';
- Future<void> killProcess(String name) async {
- log.debug("kill: ", name);
- if (Platform.isWindows) {
- await Process.run('taskkill', ["/F", "/FI", "IMAGENAME eq $name"]);
- } else {
- await Process.run('bash', ["-c", "ps -ef | grep $name | grep -v grep | awk '{print \$2}' | xargs kill -9"]);
- }
- }
- Future<bool> isRunningAsAdmin() async {
- final Shell shell = Shell();
- try {
- // Attempt the "net session" command.
- final List<ProcessResult> results = await shell.run('net session');
- // Check the exit code of the first result.
- if (results.isNotEmpty && results[0].exitCode == 0) {
- return true;
- }
- } catch (e) {
- // If any exception is thrown (like ShellException), we assume we don't have admin rights.
- return false;
- }
- return false;
- }
- Future<ProcessResult> runCCore(String executable, List<String> arguments) async {
- String executablePath = shellArgument(executable).replaceAll(' ', r'\\ ');
- //executablePath = executablePath.substring(1, executablePath.length - 1);
- if (Platform.isMacOS) {
- return await Process.run(
- 'osascript',
- [
- '-e',
- shellArguments(['do', 'shell', 'script', '$executablePath ${shellArguments(arguments)}', 'with', 'administrator', 'privileges']),
- ],
- );
- } else if (Platform.isWindows) {
- return await Process.run(
- path.join(Paths.assetsBin.path, executablePath),
- [executable, ...arguments],
- );
- } else {
- // https://blog.csdn.net/weixin_49867936/article/details/109612918
- // https://askubuntu.com/questions/287845/how-to-configure-pkexec
- return await Process.run("pkexec", [executable, ...arguments]);
- }
- }
- Future<ProcessResult> runCCoreAsAdmin(String executable, List<String> arguments) async {
- String executablePath = shellArgument(executable).replaceAll(' ', r'\\ ');
- return await Process.run(
- path.join(Paths.assetsBin.path, "run-as-admin.bat"),
- [executable, ...arguments],
- );
- }
- Future<ProcessResult> runAsAdmin(String executable, List<String> arguments) async {
- String executablePath = shellArgument(executable).replaceAll(' ', r'\\ ');
- //executablePath = executablePath.substring(1, executablePath.length - 1);
- if (Platform.isMacOS) {
- return await Process.run(
- 'osascript',
- [
- '-e',
- shellArguments(['do', 'shell', 'script', '$executablePath ${shellArguments(arguments)}', 'with', 'administrator', 'privileges']),
- ],
- );
- } else if (Platform.isWindows) {
- return await Process.run(
- path.join(Paths.assetsBin.path, "run-as-admin.bat"),
- [executable, ...arguments],
- );
- } else {
- // https://blog.csdn.net/weixin_49867936/article/details/109612918
- // https://askubuntu.com/questions/287845/how-to-configure-pkexec
- return await Process.run("pkexec", [executable, ...arguments]);
- }
- }
|