1234567891011121314151617181920212223242526 |
- #![cfg(target_os = "windows")]
- use crate::utils::dirs;
- use anyhow::{bail, Result};
- use deelevate::{PrivilegeLevel, Token};
- use runas::Command as RunasCommand;
- use std::process::Command as StdCommand;
- pub async fn invoke_uwptools() -> Result<()> {
- let resource_dir = dirs::app_resources_dir()?;
- let tool_path = resource_dir.join("enableLoopback.exe");
- if !tool_path.exists() {
- bail!("enableLoopback exe not found");
- }
- let token = Token::with_current_process()?;
- let level = token.privilege_level()?;
- match level {
- PrivilegeLevel::NotPrivileged => RunasCommand::new(tool_path).status()?,
- _ => StdCommand::new(tool_path).status()?,
- };
- Ok(())
- }
|