...
1
2
3 package winservices
4
5 import (
6 "golang.org/x/sys/windows/svc/mgr"
7 )
8
9 type scmanager struct {
10 mgr *mgr.Mgr
11 }
12
13 func openSCManager() (*scmanager, error) {
14 m, err := mgr.Connect()
15 if err != nil {
16 return nil, err
17 }
18 return &scmanager{m}, nil
19 }
20
21 func (sc *scmanager) close() error {
22 return sc.mgr.Disconnect()
23 }
24
25 func getService(serviceName string) (*mgr.Service, error) {
26 m, err := openSCManager()
27 if err != nil {
28 return nil, err
29 }
30 defer m.close()
31 return m.mgr.OpenService(serviceName)
32 }
33
View as plain text