diff --git a/src/util/service.rs b/src/util/service.rs index 6d93b0c..d57b2df 100644 --- a/src/util/service.rs +++ b/src/util/service.rs @@ -2,7 +2,7 @@ use std::env; use std::ffi::OsString; use std::path::PathBuf; use log::{error, info}; -use service_manager::{ServiceInstallCtx, ServiceLabel, ServiceManager, ServiceStartCtx, ServiceStopCtx, ServiceUninstallCtx}; +use service_manager::{ScServiceManager, ServiceInstallCtx, ServiceLabel, ServiceManager, ServiceStartCtx, ServiceStopCtx, ServiceUninstallCtx}; /// 系统服务 pub struct Service { @@ -26,11 +26,17 @@ impl Service { /// let service = Service::new("nal"); /// ``` pub fn new(name: &str) -> anyhow::Result { + let service_manager = if cfg!(windows) { + Box::new(ScServiceManager::system()) + } else { + ::native()? + }; + Ok(Self { name: name.parse()?, path: env::current_exe()?, // 通过检测平台上可用的内容来获得通用服务 - service_manage: ::native()?, + service_manage: service_manager, }) }