All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Add missing ServiceAccess flags
READ_CONTROL,WRITE_DACandWRITE_OWNER.
- Upgrade
windows-sysdependency to 0.59 and bump the MSRV to 1.60.0.
- 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).
- Breaking: Make a bunch of enums
#[non_exhaustive]:Error,PowerBroadcastSetting,PowerEventParamandServiceControl. - Breaking: Upgrade
windows-sysdependency to 0.52
- 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)
- 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)
- Implement
AsRawHandleforServiceStatusHandle. Allows using the service handles with other Windows APIs, not covered by this crate.
- 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.
- 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.
- Don't escape binary path for kernel drivers as they don't support that.
- Add support for service description. (See:
Service::set_description)
- Fix segmentation fault in
Servicefunctions, that query service config, by moving buffer allocation to heap.
- 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
- 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.
- 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
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.
- 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.
- Initial release with support for installing, uninstalling and implementing Windows services.