アプリが管理者権限で動いているか確認する

Recipe ID: sys-021

アプリケーションが管理者権限(Windows の Administrator や Linux/Mac の root)で実行されているかどうかを確認する方法を解説します。
システムファイルの書き換えやポートのバインドなど、特権が必要な操作を行う前のチェックに利用します。

前提条件

src-tauri/Cargo.tomlis_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();