说明：

NSIS 2.x

文件 Services.dll - ANSI 版 (官方 NSIS 2.x) 放到 NSIS\Plugins 目录。
或在脚本中使用：
!addPluginDir .
语法来指定自定义插件目录。点 (.) 代表当前目录，或者其他自定义路径。

文件 Unicode\Services.dll - Unicode 版 (非官方 NSIS Unicode 2.x) 放到 NSIS\Plugins 目录。
或在脚本中使用：
!addPluginDir .\Unicode
语法来指定自定义插件目录。点 (.) 代表当前目录，或者其他自定义路径。

NSIS 3.0

文件 Services.dll - ANSI 版放到 Plugins\x86-ansi 目录。
文件 Unicode\Services.dll - Unicode 版放到 Plugins\x86-unicode 目录。
或在脚本中使用：
!addPluginDir /x86-ansi .
!addPluginDir /x86-unicode .\Unicode
语法来指定自定义插件目录。点 (.) 代表当前目录，或者其他自定义路径。

用法：

Services::startService "ServiceName"
Pop $var
# 1 - 成功
# 0 - 失败
注：超时时间为10秒。每100毫秒检测一次，最多检测100次。

Services::stopService "ServiceName"
Pop $var
# 1 - 成功
# 0 - 失败
注：超时时间为10秒。每100毫秒检测一次，最多检测100次。

Services::existsService "ServiceName"
Pop $var
# 1 - 存在
# 0 - 不存在

Services::installService "ServiceName" "DisplayName" "BinaryPath" "ServiceType" "StartType"
Pop $var
# 1 - 成功
# 0 - 失败

* ServiceType (必选其一)：
!define SERVICE_KERNEL_DRIVER       0x00000001
!define SERVICE_FILE_SYSTEM_DRIVER  0x00000002
!define SERVICE_WIN32_OWN_PROCESS   0x00000010
!define SERVICE_WIN32_SHARE_PROCESS 0x00000020

* StartType (必选其一)：
!define SERVICE_BOOT_START          0x00000000
!define SERVICE_SYSTEM_START        0x00000001
!define SERVICE_AUTO_START          0x00000002
!define SERVICE_DEMAND_START        0x00000003
!define SERVICE_DISABLED            0x00000004

例如：
Services::installService "ShareSvc" "Share Service" `"$INSTDIR\sharesvc.exe"` ${SERVICE_WIN32_OWN_PROCESS} ${SERVICE_AUTO_START}
Pop $var

Services::removeService "ServiceName"
Pop $var
# 1 - 成功
# 0 - 失败

Services::isServiceRunning "ServiceName"
Pop $var
# 1 - 运行
# 0 - 未运行

Services::isServiceStopped "ServiceName"
Pop $var
# 1 - 已停止
# 0 - 未停止
