package mainimport (
"flag"
"fmt"
"github.com/robfig/cron"
"time"
)import (
.
"github.com/CodyGuo/win"
)
var
(
arg string)func init() {
flag.StringVar(&arg,
"uFlags"
,
"shutdown"
,
"shutdown logoff reboot"
)}func main() {
flag.Parse()
c := cron.New(cron.WithSeconds())
c.AddFunc(
"0 40 18 * * ?"
, shutdown)
c.Start()
select {}
switch
arg {
case
"logoff"
:
logoff()
case
"reboot"
:
reboot()
case
"shutdown"
:
shutdown()
default
:
fmt.Println(
"您输入的参数有误."
)
}}func Test(){
fmt.Println(time.Now())}func logoff() {
ExitWindowsEx(EWX_LOGOFF, 0)}func reboot() {
getPrivileges()
ExitWindowsEx(EWX_REBOOT, 0)}func shutdown() {
getPrivileges()
ExitWindowsEx(EWX_SHUTDOWN, 0)}func getPrivileges() {
var
hToken HANDLE
var
tkp TOKEN_PRIVILEGES OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY, &hToken)
LookupPrivilegeValueA(nil, StringToBytePtr(SE_SHUTDOWN_NAME), &tkp.Privileges[0].Luid)
tkp.PrivilegeCount = 1
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED AdjustTokenPrivileges(hToken, false, &tkp, 0, nil, nil)}