dotnet/runtime

Environment.IsPrivilegedProcess unexpectedly returns true on Windows

Open

#84.137 aperta il 30 mar 2023

Vedi su GitHub
 (5 commenti) (2 reazioni) (0 assegnatari)C# (5445 fork)batch import
area-System.Runtimedocumentationhelp wantedos-windows

Metriche repository

Star
 (17.886 star)
Metriche merge PR
 (Merge medio 12g 11h) (661 PR mergiate in 30 g)

Descrizione

Description

Environment.IsPrivilegedProcess return True if process is running with runas /trustlevel:0x20000 under local administrator account on Windows.

The main reason is that the local administrator account is excluded from UAC. It is unclear whether this is a bug in the GetTokenInformation. If not, then at the very least Environment.IsPrivilegedProcess behavior should be explicitly documented.

Also, I don't know if there is this problem for Service Accounts. In this case, the problem is more unpleasant and must be corrected.

Reproduction Steps

  1. Run process under local administrator account
  2. Run subprocess with runas /trustlevel:0x20000
  3. Call Environment.IsPrivilegedProcess in the subprocess

Expected behavior

Environment.IsPrivilegedProcess return FALSE

Actual behavior

Environment.IsPrivilegedProcess return TRUE

Regression?

No response

Known Workarounds

No response

Configuration

.Net 8.0 Preview 2

Other information

No response

Guida contributor