From dc3e71dcd34b649a22ff9094a8888f8a26b47091 Mon Sep 17 00:00:00 2001 From: Asger Hautop Drewsen Date: Tue, 19 Aug 2025 14:30:17 +0200 Subject: [PATCH] Add function to check if current process is running as a service --- src/service.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/service.rs b/src/service.rs index 3fe426d..d0729ba 100644 --- a/src/service.rs +++ b/src/service.rs @@ -1989,6 +1989,20 @@ fn escape_wide(s: impl AsRef) -> ::std::result::Result crate::Result { + let pid = std::process::id(); + + let mut session_id = 0u32; + + let success = unsafe { RemoteDesktop::ProcessIdToSessionId(pid, &raw mut session_id) }; + if success == 0 { + Err(Error::Winapi(io::Error::last_os_error())) + } else { + Ok(session_id == 0) + } +} + #[cfg(test)] mod tests { use super::*;