plugin/step/winsanitycheck/root_windows.go (32 lines of code) (raw):

// +build windows package winsanitycheck /* Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved */ import ( "errors" "fmt" "golang.org/x/sys/windows" ) // EnsureSuperuser checks that we're running as the administrator account. // Shamelessly stolen from https://github.com/golang/go/issues/28804 func EnsureSuperuser(sc *SanityCheck) (FixFn, error) { var sid *windows.SID err := windows.AllocateAndInitializeSid( &windows.SECURITY_NT_AUTHORITY, 2, windows.SECURITY_BUILTIN_DOMAIN_RID, windows.DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, &sid) if err != nil { return func(*SanityCheck) error { return fmt.Errorf("SID Error: %s", err) }, err } token := windows.Token(0) isMember, err := token.IsMember(sid) if err != nil { return func(*SanityCheck) error { return fmt.Errorf("Token Membership Error: %s", err) }, err } if isMember { return nil, nil } return nil, errors.New("please elevate to admin") }