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

◆ UserDomainName

string System.Environment.UserDomainName
staticget

Definition at line 267 of file Environment.cs.

268 {
269 get
270 {
271 Span<char> initialBuffer = stackalloc char[40];
272 ValueStringBuilder builder = new ValueStringBuilder(initialBuffer);
273 GetUserName(ref builder);
274 ReadOnlySpan<char> span = builder.AsSpan();
275 int num = span.IndexOf('\\');
276 if (num != -1)
277 {
278 builder.Length = num;
279 return builder.ToString();
280 }
281 initialBuffer = stackalloc char[64];
282 ValueStringBuilder valueStringBuilder = new ValueStringBuilder(initialBuffer);
283 uint cchReferencedDomainName = (uint)valueStringBuilder.Capacity;
284 Span<byte> span2 = stackalloc byte[68];
285 uint cbSid = 68u;
286 uint peUse;
287 while (!Interop.Advapi32.LookupAccountNameW(null, ref builder.GetPinnableReference(), ref MemoryMarshal.GetReference(span2), ref cbSid, ref valueStringBuilder.GetPinnableReference(), ref cchReferencedDomainName, out peUse))
288 {
289 int lastPInvokeError = Marshal.GetLastPInvokeError();
290 if (lastPInvokeError != 122)
291 {
292 throw new InvalidOperationException(Win32Marshal.GetMessage(lastPInvokeError));
293 }
294 valueStringBuilder.EnsureCapacity((int)cchReferencedDomainName);
295 }
296 builder.Dispose();
297 valueStringBuilder.Length = (int)cchReferencedDomainName;
298 return valueStringBuilder.ToString();
299 }
300 }
static bool LookupAccountNameW(string lpSystemName, ref char lpAccountName, ref byte Sid, ref uint cbSid, ref char ReferencedDomainName, ref uint cchReferencedDomainName, out uint peUse)
static void GetUserName(ref ValueStringBuilder builder)
static string GetMessage(int errorCode)
ReadOnlySpan< char > AsSpan(bool terminate)