|
|
@ -16,20 +16,19 @@ var (
|
|
|
|
win windowsSystem = windowsOS{}
|
|
|
|
win windowsSystem = windowsOS{}
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
type OSServiceClient struct {
|
|
|
|
type OSServiceClient struct{}
|
|
|
|
scHandle windows.Handle
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func NewOSServiceClient() (*OSServiceClient, error) {
|
|
|
|
func NewOSServiceClient() (*OSServiceClient, error) {
|
|
|
|
scHandle, err := win.OpenSCManager(nil, nil, windows.SC_MANAGER_CONNECT)
|
|
|
|
return &OSServiceClient{}, nil
|
|
|
|
if err != nil {
|
|
|
|
|
|
|
|
return nil, fmt.Errorf("error connecting to service manager: %w", err)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return &OSServiceClient{scHandle: scHandle}, nil
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (client *OSServiceClient) Check(serviceName string) (err error) {
|
|
|
|
func (client *OSServiceClient) Check(serviceName string) (err error) {
|
|
|
|
m := win.getWindowsSvcMgr(client.scHandle)
|
|
|
|
h, err := windows.OpenSCManager(nil, nil, windows.SC_MANAGER_CONNECT)
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
|
|
|
return fmt.Errorf("failed to connect to Windows service manager: %w", err)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
m := win.getWindowsSvcMgr(h)
|
|
|
|
defer m.Disconnect()
|
|
|
|
defer m.Disconnect()
|
|
|
|
|
|
|
|
|
|
|
|
svcNamePtr, err := syscall.UTF16PtrFromString(serviceName)
|
|
|
|
svcNamePtr, err := syscall.UTF16PtrFromString(serviceName)
|
|
|
|