import 'dart:ffi'; import 'dart:io'; typedef _IsAdminC = Int32 Function(); typedef _IsAdminD = int Function(); /// 이 프로그램이 관리자 권한 (높은 무결성) 으로 실행 중인지 (207). /// 내장 Chrome 엔진 (CEF) 은 관리자 권한이면 스스로 끝나고, 억지로 돌리면 샌드박스 없이 관리자 권한으로 웹 페이지를 돌린다. class Elevation { Elevation._(); static bool? _cached; /// 관리자 권한으로 실행 중인지 (Windows 만, 모르면 false) static bool get elevated { if (!Platform.isWindows) return false; return _cached ??= () { try { final f = DynamicLibrary.open('shell32.dll').lookupFunction<_IsAdminC, _IsAdminD>('IsUserAnAdmin'); return f() != 0; } catch (_) { return false; } }(); } }