...
1
2
3 package winapi
4
5 import (
6 "syscall"
7
8 "golang.org/x/sys/windows"
9 )
10
11 const UserNameCharLimit = 20
12
13 const (
14 USER_PRIV_GUEST uint32 = iota
15 USER_PRIV_USER
16 USER_PRIV_ADMIN
17 )
18
19 const (
20 UF_NORMAL_ACCOUNT = 0x00200
21 UF_DONT_EXPIRE_PASSWD = 0x10000
22 )
23
24 const NERR_UserNotFound = syscall.Errno(0x8AD)
25
26
27
28
29 type LocalGroupMembersInfo0 struct {
30 Sid *windows.SID
31 }
32
33
34
35
36
37 type LocalGroupInfo1 struct {
38 Name *uint16
39 Comment *uint16
40 }
41
42
43
44
45
46
47
48
49
50
51
52 type UserInfo1 struct {
53 Name *uint16
54 Password *uint16
55 PasswordAge uint32
56 Priv uint32
57 HomeDir *uint16
58 Comment *uint16
59 Flags uint32
60 ScriptPath *uint16
61 }
62
63
64
65
66
67
68
69
70
71
72
73
74 func NetLocalGroupGetInfo(serverName, groupName string, level uint32, bufPtr **byte) (err error) {
75 var (
76 serverNameUTF16 *uint16
77 groupNameUTF16 *uint16
78 )
79 if serverName != "" {
80 serverNameUTF16, err = windows.UTF16PtrFromString(serverName)
81 if err != nil {
82 return err
83 }
84 }
85 if groupName != "" {
86 groupNameUTF16, err = windows.UTF16PtrFromString(groupName)
87 if err != nil {
88 return err
89 }
90 }
91 return netLocalGroupGetInfo(
92 serverNameUTF16,
93 groupNameUTF16,
94 level,
95 bufPtr,
96 )
97 }
98
99
100
101
102
103
104
105
106
107
108
109
110 func NetUserAdd(serverName string, level uint32, buf *byte, parm_err *uint32) (err error) {
111 var serverNameUTF16 *uint16
112 if serverName != "" {
113 serverNameUTF16, err = windows.UTF16PtrFromString(serverName)
114 if err != nil {
115 return err
116 }
117 }
118 return netUserAdd(
119 serverNameUTF16,
120 level,
121 buf,
122 parm_err,
123 )
124 }
125
126
127
128
129
130
131
132
133
134
135 func NetUserDel(serverName, userName string) (err error) {
136 var (
137 serverNameUTF16 *uint16
138 userNameUTF16 *uint16
139 )
140 if serverName != "" {
141 serverNameUTF16, err = windows.UTF16PtrFromString(serverName)
142 if err != nil {
143 return err
144 }
145 }
146 if userName != "" {
147 userNameUTF16, err = windows.UTF16PtrFromString(userName)
148 if err != nil {
149 return err
150 }
151 }
152 return netUserDel(
153 serverNameUTF16,
154 userNameUTF16,
155 )
156 }
157
158
159
160
161
162
163
164
165
166
167
168
169
170 func NetLocalGroupAddMembers(serverName, groupName string, level uint32, buf *byte, totalEntries uint32) (err error) {
171 var (
172 serverNameUTF16 *uint16
173 groupNameUTF16 *uint16
174 )
175 if serverName != "" {
176 serverNameUTF16, err = windows.UTF16PtrFromString(serverName)
177 if err != nil {
178 return err
179 }
180 }
181 if groupName != "" {
182 groupNameUTF16, err = windows.UTF16PtrFromString(groupName)
183 if err != nil {
184 return err
185 }
186 }
187 return netLocalGroupAddMembers(
188 serverNameUTF16,
189 groupNameUTF16,
190 level,
191 buf,
192 totalEntries,
193 )
194 }
195
View as plain text