1//go:build windows
2
3package internal
4
5import (
6 "errors"
7
8 "golang.org/x/sys/windows"
9)
10
11// Just a dummy.
12var (
13 SyscallEACCES = errors.New("dummy")
14 UnixEACCES = errors.New("dummy")
15)
16
17func SetRlimit() {}
18func Maxfiles() uint64 { return 1<<64 - 1 }
19func Mkfifo(path string, mode uint32) error { return errors.New("no FIFOs on Windows") }
20func Mknod(path string, mode uint32, dev int) error { return errors.New("no device nodes on Windows") }
21
22func HasPrivilegesForSymlink() bool {
23 var sid *windows.SID
24 err := windows.AllocateAndInitializeSid(
25 &windows.SECURITY_NT_AUTHORITY,
26 2,
27 windows.SECURITY_BUILTIN_DOMAIN_RID,
28 windows.DOMAIN_ALIAS_RID_ADMINS,
29 0, 0, 0, 0, 0, 0,
30 &sid)
31 if err != nil {
32 return false
33 }
34 defer windows.FreeSid(sid)
35 token := windows.Token(0)
36 member, err := token.IsMember(sid)
37 if err != nil {
38 return false
39 }
40 return member || token.IsElevated()
41}