From 20457ee8ea8546920d3f4e19e405da45250dc5a5 Mon Sep 17 00:00:00 2001 From: Nick Petroni Date: Wed, 20 Jan 2016 11:03:39 -0500 Subject: [PATCH] x/sys/windows/svc/mgr: allow other ServiceType values in CreateService Preserves SERVICE_WIN32_OWN_PROCESS as the default. Fixes golang/go#14019 Change-Id: I764016c1b5ec5e1fe88ed39b9803754af966b2f3 Reviewed-on: https://go-review.googlesource.com/18760 Reviewed-by: Alex Brainman Run-TryBot: Alex Brainman --- windows/svc/mgr/mgr.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/windows/svc/mgr/mgr.go b/windows/svc/mgr/mgr.go index 4d7e72ec..da8ceb6e 100644 --- a/windows/svc/mgr/mgr.go +++ b/windows/svc/mgr/mgr.go @@ -85,12 +85,15 @@ func (m *Mgr) CreateService(name, exepath string, c Config, args ...string) (*Se if c.ErrorControl == 0 { c.ErrorControl = ErrorNormal } + if c.ServiceType == 0 { + c.ServiceType = windows.SERVICE_WIN32_OWN_PROCESS + } s := syscall.EscapeArg(exepath) for _, v := range args { s += " " + syscall.EscapeArg(v) } h, err := windows.CreateService(m.Handle, toPtr(name), toPtr(c.DisplayName), - windows.SERVICE_ALL_ACCESS, windows.SERVICE_WIN32_OWN_PROCESS, + windows.SERVICE_ALL_ACCESS, c.ServiceType, c.StartType, c.ErrorControl, toPtr(s), toPtr(c.LoadOrderGroup), nil, toStringBlock(c.Dependencies), toPtr(c.ServiceStartName), toPtr(c.Password)) if err != nil {