#windows #manager #service

scmanager-windows-rs

Windows服务管理器

1 个不稳定版本

0.1.0 2024年7月2日

#64Windows API

Download history 159/week @ 2024-07-02

每月 下载量 159

Apache-2.0

42KB
824

我为什么创建这个库

  • 我正在尽可能多地学习Rust,所以我在这里。
  • 我没有找到任何做类似事情的库。
  • 它有一些缺失的情况,还没有完全实现。
  • 它满足了我的需求,我认为它将帮助其他人进行基本使用。
  • 是的,文档并不出色。对此表示歉意。

示例

  • 函数名是自我解释的,但这里有一些方便的示例(对于那些像我一样的人)。

    let service_manager = ServiceManager::new()?;
    let service_name = "test";
    let service_path = r"C:\Windows\system32\test.sys";

    let service_handle = service_manager.create_or_get(ServiceConfig {
        service_name: service_name.to_string(),
        display_name: service_name.to_string(),
        binary_path: "invalid path test".to_string(),
        start_type: ServiceStartType::DemandStart,
        service_type: ServiceType::KernelDriver,
        ..Default::default()
    })?;

    assert_eq!(
        service_handle.get_start_type()?,
        ServiceStartType::DemandStart
    );

    service_handle.update_config(ServiceConfig {
        display_name: service_name.to_string(),
        binary_path: service_path.to_string(),
        service_type: ServiceType::KernelDriver,
        ..Default::default()
    })?;
    service_handle.start_blocking()?;

    assert_eq!(service_handle.state()?, ServiceState::Running);

    service_handle.stop_blocking()?;

    assert_eq!(service_handle.state()?, ServiceState::Stopped);

    std::thread::sleep(std::time::Duration::from_secs(2));

    service_handle.delete()?;

依赖项

~13–21MB
~272K SLoC