windows-service
A crate that provides facilities for management and implementation of windows services
0.8.1
6.4M downloads/mo
#3977 most downloaded on crates.io
mullvad/windows-service-rs
What this package is like to depend on
Last release 3 months ago
08 May 2026
Ships on a steady schedule
a new release about every 10 months
Nearly every release is documented
notes for 10 of 10 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
10 releases · first in 2018
1 release in the last 12 months
see the full history below
Release timeline
10 releases · Jun 2018 to May 2026
2019
2020
2021
2022
2023
2024
2025
2026
Releases
latest 10-
0.8.108 May 2026Release notes
Open source →Changed
- Upgrade
windows-sysdependency to 0.61 and bump the MSRV to 1.71.0.
- Upgrade
-
0.8.019 Feb 2025Release notes
Open source →Added:
- Add missing ServiceAccess flags
READ_CONTROL,WRITE_DACandWRITE_OWNER.
Changed:
- Upgrade
windows-sysdependency to 0.59 and bump the MSRV to 1.60.0.
Release notes
Open source →Added
- Add missing ServiceAccess flags
READ_CONTROL,WRITE_DACandWRITE_OWNER. - Add support for protected services (See:
ServiceLaunchProtected).
Changed
- Upgrade
windows-sysdependency to 0.59 and bump the MSRV to 1.60.0.
- Add missing ServiceAccess flags
-
0.7.016 Apr 2024Release notes
Open source →Added
- Breaking: Add support for user-defined control codes in services.
(See:Service::notifyandnotify_service.rsexample). This is breaking since
theServiceControlenum was exhaustive in version 0.6.0. - Breaking: Add support for
LidSwitchStateChangeinPowerBroadcastSetting. This is breaking
sincePowerBroadcastSettingwas an exhaustive enum in version 0.6.0. - Breaking: Add support for
SERVICE_SYSTEM_STARTandSERVICE_BOOT_STARTin service
start type. This is breaking since theServiceStartTypeenum is exhaustive. - Add function for obtaining service SID infos. (See:
Service::get_config_service_sid_info).
Changed
- Breaking: Make a bunch of enums
#[non_exhaustive]:Error,PowerBroadcastSetting,
PowerEventParamandServiceControl. - Breaking: Upgrade
windows-sysdependency to 0.52
Release notes
Open source →Added
- Breaking: Add support for user-defined control codes in services.
(See:
Service::notifyandnotify_service.rsexample). This is breaking since theServiceControlenum was exhaustive in version 0.6.0. - Breaking: Add support for
LidSwitchStateChangeinPowerBroadcastSetting. This is breaking sincePowerBroadcastSettingwas an exhaustive enum in version 0.6.0. - Breaking: Add support for
SERVICE_SYSTEM_STARTandSERVICE_BOOT_STARTin service start type. This is breaking since theServiceStartTypeenum is exhaustive. - Add function for obtaining service SID infos. (See:
Service::get_config_service_sid_info).
Changed
- Breaking: Make a bunch of enums
#[non_exhaustive]:Error,PowerBroadcastSetting,PowerEventParamandServiceControl. - Breaking: Upgrade
windows-sysdependency to 0.52
- Breaking: Add support for user-defined control codes in services.
-
0.6.007 Mar 2023Release notes
Open source →Added
- Add support for delayed autostart in services. (See:
Service::set_delayed_auto_start) - Add support for specifying a preshutdown timeout. (See:
Service::set_preshutdown_timeout) - Add function for obtaining service names from display names.
(See:
ServiceManager::service_name_from_display_name)
Changed
- Breaking: Consolidate
Errortype. Remove dependency onerr-derive. - Breaking:
Service::deletedoes not consumeselfany longer. Make sure todropa reference toServicemanually if you plan to poll SCM synchronously to determine when the service is removed from system. (Seeuninstall_service.rsexample)
- Add support for delayed autostart in services. (See:
-
0.5.020 Jul 2022Release notes
Open source →Added
- Implement
AsRawHandleforServiceStatusHandle. Allows using the service handles with other Windows APIs, not covered by this crate.
Changed
- Upgrade the crate to Rust 2021 edition and bump the MSRV to 1.58.0
- Breaking: Change
winapidependency towindows-sys. This is a breaking change since some of the low level Windows types are exposed in the public API of this library. - Breaking: Update
widestringdependency to 1.0 and remove it from the public API. - Breaking: Change
ServiceState::to_rawto takeselfinstead of&self.
- Implement
-
0.4.012 Aug 2021Release notes
Open source →Changed
- Breaking:
ServiceDependency::from_system_identifier(),ServiceManager::new(),ServiceManager::local_computer(),ServiceManager::remote_computer()now takeimpl AsRef<OsStr>arguments. - Upgrade err-derive dependency to 0.3.0
ServiceStatusHandleis now Sync.
Fixed
- Don't escape binary path for kernel drivers as they don't support that.
- Breaking:
-
0.3.127 Oct 2020Release notes
Open source →Added
- Add support for service description. (See:
Service::set_description)
Fixed
- Fix segmentation fault in
Servicefunctions, that query service config, by moving buffer
allocation to heap.
Release notes
Open source →Added
- Add support for service description. (See:
Service::set_description)
Fixed
- Fix segmentation fault in
Servicefunctions, that query service config, by moving buffer allocation to heap.
- Add support for service description. (See:
-
0.3.018 Jun 2020Release notes
Open source →Added
- Add support for configuring the service SID info.
- Add support for changing mandatory configuration settings on service.
- Add support for service failure actions. (See:
ServiceFailureActions,
Service::update_failure_actions,Service::get_failure_actions,
Service::set_failure_actions_on_non_crash_failures,
Service::get_failure_actions_on_non_crash_failures) - Add support to pause and continue services. (See:
Service::pauseandService::resume) - Use
QueryServiceStatusExwhen querying service status. Allows getting the process ID of a
running service
Changed
- Bumped the MSRV to 1.34, because of err-derive upgrade which depend on quote, to use
Duration::as_millis()and theTryFromtrait. - Breaking:
ServiceManager::create_service()now expects a borrowedServiceInfoargument.
Release notes
Open source →Added
- Add support for configuring the service SID info.
- Add support for changing mandatory configuration settings on service.
- Add support for service failure actions. (See:
ServiceFailureActions,Service::update_failure_actions,Service::get_failure_actions,Service::set_failure_actions_on_non_crash_failures,Service::get_failure_actions_on_non_crash_failures) - Add support to pause and continue services. (See:
Service::pauseandService::resume) - Use
QueryServiceStatusExwhen querying service status. Allows getting the process ID of a running service
Changed
- Bumped the MSRV to 1.34, because of err-derive upgrade which depend on quote, to use
Duration::as_millis()and theTryFromtrait. - Breaking:
ServiceManager::create_service()now expects a borrowedServiceInfoargument.
-
0.2.001 Apr 2019Release notes
Open source →Added
- A
ServiceExitCode::NO_ERRORconstant for easy access to the success value. - Add
Service::startfor starting services programmatically. - Add
Service::query_configfor getting the config of the service. - Add
ServiceInfo::dependenciesfor specifying service dependencies.
Changed
- Changed
service_control_handler::registerto accept anFnMutrather than just anFnfor the
event_handlerclosure. - Upgrade to Rust 2018. This raises the minimum required Rust version to 1.31.0.
- Replace error-chain error library with err-derive. So all error types are changed.
- Change
ServiceTypeimplementation to use thebitflags!macro.
Fixed
- Fix invalid pointer manipulations in service creation routine in ServiceManager.
- Fix memory leak in
service_control_handler::registerthat did not releaseevent_handlerin
the case of an error. - Treat FFI return code 0 as error, instead of treating 1 as success.
Release notes
Open source →Added
- Add
ServiceExitCode::NO_ERRORconstant for easy access to the success value. - Add
Service::startfor starting services programmatically. - Add
Service::query_configfor getting the config of the service. - Add
ServiceInfo::dependenciesfor specifying service dependencies.
Changed
- Changed
service_control_handler::registerto accept anFnMutrather than just anFnfor theevent_handlerclosure. - Upgrade to Rust 2018. This raises the minimum required Rust version to 1.31.0.
- Replace error-chain error library with err-derive. So all error types are changed.
- Change
ServiceTypeimplementation to use thebitflags!macro.
Fixed
- Fix invalid pointer manipulations in service creation routine in ServiceManager.
- Fix memory leak in
service_control_handler::registerthat did not releaseevent_handlerin the case of an error. - Treat FFI return code 0 as error, instead of treating 1 as success.
- A
-
0.1.004 Jun 2018Release notes
Open source →Added
- Initial release with support for installing, uninstalling and implementing Windows services.