Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ SetSecurityInfo()

static int System.Security.AccessControl.Win32.SetSecurityInfo ( ResourceType type,
string name,
SafeHandle handle,
SecurityInfos securityInformation,
SecurityIdentifier owner,
SecurityIdentifier group,
GenericAcl sacl,
GenericAcl dacl )
inlinestaticpackage

Definition at line 123 of file Win32.cs.

124 {
125 byte[] array = null;
126 byte[] array2 = null;
127 byte[] array3 = null;
128 byte[] array4 = null;
129 Privilege privilege = null;
130 if (owner != null)
131 {
132 int binaryLength = owner.BinaryLength;
133 array = new byte[binaryLength];
134 owner.GetBinaryForm(array, 0);
135 }
136 if (group != null)
137 {
138 int binaryLength = group.BinaryLength;
139 array2 = new byte[binaryLength];
140 group.GetBinaryForm(array2, 0);
141 }
142 if (dacl != null)
143 {
144 int binaryLength = dacl.BinaryLength;
145 array4 = new byte[binaryLength];
146 dacl.GetBinaryForm(array4, 0);
147 }
148 if (sacl != null)
149 {
150 int binaryLength = sacl.BinaryLength;
151 array3 = new byte[binaryLength];
152 sacl.GetBinaryForm(array3, 0);
153 }
154 if ((securityInformation & SecurityInfos.SystemAcl) != 0)
155 {
156 privilege = new Privilege("SeSecurityPrivilege");
157 }
158 int num;
159 try
160 {
161 if (privilege != null)
162 {
163 try
164 {
165 privilege.Enable();
166 }
167 catch (PrivilegeNotHeldException)
168 {
169 }
170 }
171 if (name != null)
172 {
173 num = (int)global::Interop.Advapi32.SetSecurityInfoByName(name, (uint)type, (uint)securityInformation, array, array2, array4, array3);
174 }
175 else
176 {
177 if (handle == null)
178 {
179 throw new ArgumentException();
180 }
181 if (handle.IsInvalid)
182 {
184 }
185 num = (int)global::Interop.Advapi32.SetSecurityInfoByHandle(handle, (uint)type, (uint)securityInformation, array, array2, array4, array3);
186 }
187 switch (num)
188 {
189 case 1300:
190 case 1314:
191 throw new PrivilegeNotHeldException("SeSecurityPrivilege");
192 case 5:
193 case 1347:
194 throw new UnauthorizedAccessException();
195 case 0:
196 break;
197 default:
198 goto IL_0145;
199 }
200 }
201 catch
202 {
203 privilege?.Revert();
204 throw;
205 }
206 finally
207 {
208 privilege?.Revert();
209 }
210 return 0;
211 IL_0145:
212 if (num == 8)
213 {
214 throw new OutOfMemoryException();
215 }
216 return num;
217 }
static string Argument_InvalidSafeHandle
Definition SR.cs:62
Definition SR.cs:7
void GetBinaryForm(byte[] binaryForm, int offset)

References System.SR.Argument_InvalidSafeHandle, System.array, System.Security.AccessControl.GenericAcl.BinaryLength, System.Security.Principal.SecurityIdentifier.BinaryLength, System.Security.AccessControl.Privilege.Enable(), System.Security.AccessControl.GenericAcl.GetBinaryForm(), System.Security.Principal.SecurityIdentifier.GetBinaryForm(), System.handle, System.Security.AccessControl.Privilege.Revert(), and System.type.

Referenced by System.Security.AccessControl.NativeObjectSecurity.Persist().