func EnsureSuperuser()

in plugin/step/winsanitycheck/root_windows.go [18:45]


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")
}