devqp
Специалист
Представляем реализацию Windows-приложения на Rust, которое блокирует компьютер при вызове API endpoint. Решение использует системную функцию LockWorkStation через вызов rundll32.exe.
Зависимости Cargo.toml:
Реализация main.rs:
Принцип работы:
1. Сервер запускается на 127.0.0.1:8080 с endpoint GET /lock
2. При вызове endpoint выполняется системная команда блокировки рабочей станции
3. Результат операции возвращается в HTTP-ответе (200 OK при успехе, 500 при ошибке)
Особенности:
• Только для Windows (использует user32.dll)
• Требует запуска с правами пользователя
• Не поддерживает аутентификацию — рекомендуется добавить механизмы безопасности для производственного использования.
Зависимости Cargo.toml:
Код:
[package]
name = "lock_pc_api"
version = "0.1.0"
edition = "2021"
[dependencies]
actix-web = "4.0"
tokio = { version = "1", features = ["full"] }
Реализация main.rs:
Код:
use actix_web::{web, App, HttpServer, Responder, HttpResponse};
use std::process::Command;
#[tokio::main]
async fn main() -> std::io::Result<()> {
HttpServer::new(|| {
App::new()
.route("/lock", web::get().to(lock_pc))
})
.bind("127.0.0.1:8080")?
.run()
.await
}
async fn lock_pc() -> impl Responder {
if lock_pc_action() {
HttpResponse::Ok().body("PC locked successfully")
} else {
HttpResponse::InternalServerError().body("Failed to lock PC")
}
}
fn lock_pc_action() -> bool {
Command::new("rundll32.exe")
.arg("user32.dll,LockWorkStation")
.status()
.is_ok()
}
Принцип работы:
1. Сервер запускается на 127.0.0.1:8080 с endpoint GET /lock
2. При вызове endpoint выполняется системная команда блокировки рабочей станции
3. Результат операции возвращается в HTTP-ответе (200 OK при успехе, 500 при ошибке)
Особенности:
• Только для Windows (использует user32.dll)
• Требует запуска с правами пользователя
• Не поддерживает аутентификацию — рекомендуется добавить механизмы безопасности для производственного использования.