31 lines
696 B
Go
31 lines
696 B
Go
//go:build windows
|
|
// +build windows
|
|
|
|
package cmd
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/evil7/hostsync/service"
|
|
"github.com/evil7/hostsync/utils"
|
|
"golang.org/x/sys/windows/svc"
|
|
)
|
|
|
|
// tryRunAsSystemService 尝试作为系统服务运行 (Windows)
|
|
func tryRunAsSystemService() (bool, error) {
|
|
isWindowsService, err := svc.IsWindowsService()
|
|
if err != nil {
|
|
return false, fmt.Errorf("检查服务环境失败: %v", err)
|
|
}
|
|
if isWindowsService {
|
|
// 作为 Windows 服务运行
|
|
utils.LogInfo("作为 Windows 服务启动...")
|
|
if err := service.RunAsWindowsService(); err != nil {
|
|
return false, fmt.Errorf("windows 服务运行失败: %v", err)
|
|
}
|
|
return true, nil
|
|
}
|
|
|
|
return false, nil
|
|
}
|