アプリケーションが管理者権限(Windows の Administrator や Linux/Mac の root)で実行されているかどうかを確認する方法を解説します。
システムファイルの書き換えやポートのバインドなど、特権が必要な操作を行う前のチェックに利用します。
前提条件
src-tauri/Cargo.toml に is_elevated を追加します。
[dependencies]
tauri = { version = "2.0.0", features = [] }
is_elevated = "0.1"
1. バックエンドから作成する (Rust)
is_elevated クレートなどを使用するか、OS 固有の API を Rust から呼び出して判定します。
ここでは is_elevated クレートを使用したクロスプラットフォームな実装例を紹介します。
Rust 実装
use tauri::command;
use is_elevated::is_elevated;
#[command]
fn check_is_admin() -> bool {
// 管理者権限があれば true を返す
is_elevated()
}
#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
tauri::Builder::default()
.invoke_handler(tauri::generate_handler![check_is_admin])
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
2. フロントエンドから呼び出す (TypeScript)
Rust で実装した check_is_admin コマンドを呼び出します。
import { invoke } from '@tauri-apps/api/core';
async function checkPrivileges() {
const isAdmin = await invoke<boolean>('check_is_admin');
if (isAdmin) {
console.log('管理者権限で実行されています');
} else {
console.log('一般ユーザー権限で実行されています');
}
}
checkPrivileges();