Skip to content
Prev Previous commit
Next Next commit
Simpler privileged process helpers
  • Loading branch information
jeffhandley committed Nov 27, 2022
commit a179d099f886ec9ca07caf19f696b476cf7d4784
Original file line number Diff line number Diff line change
Expand Up @@ -55,27 +55,8 @@ public static partial class PlatformDetection
public static bool IsNotFedoraOrRedHatFamily => !IsFedora && !IsRedHatFamily;
public static bool IsNotDebian10 => !IsDebian10;

private static int s_isSuperUser = -1;
public static bool IsSuperUser
{
get
{
if (s_isSuperUser != -1)
return s_isSuperUser == 1;

if (IsBrowser || IsWindows)
{
s_isSuperUser = 0;
return false;
}

s_isSuperUser = AdminHelpers.IsProcessElevated() ? 1 : 0;

return s_isSuperUser == 1;
}
}

public static bool IsUnixAndSuperUser => !IsWindows && IsSuperUser;
public static bool IsSuperUser => IsBrowser || IsWindows ? false : IsPrivilegedProcess;
public static bool IsUnixAndSuperUser => !IsWindows && IsPrivilegedProcess;

public static Version OpenSslVersion => !IsOSXLike && !IsWindows && !IsAndroid ?
GetOpenSslVersion() :
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -252,27 +252,7 @@ public static bool IsInAppContainer

public static bool IsWindowsX86OrX64 => PlatformDetection.IsWindows && (PlatformDetection.IsX86Process || PlatformDetection.IsX64Process);

private static int s_isWindowsElevated = -1;
public static bool IsWindowsAndElevated
{
get
{
if (s_isWindowsElevated != -1)
return s_isWindowsElevated == 1;

if (!IsWindows || IsInAppContainer)
{
s_isWindowsElevated = 0;
return false;
}

s_isWindowsElevated = AdminHelpers.IsProcessElevated() ? 1 : 0;

return s_isWindowsElevated == 1;
}
}

public static bool IsWindowsAndNotElevated
=> IsWindows && !IsWindowsAndElevated;
public static bool IsWindowsAndElevated => IsWindows && IsPrivilegedProcess;
public static bool IsWindowsAndNotElevated => IsWindows && !IsPrivilegedProcess;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,19 @@ public static partial class PlatformDetection
public static bool Is64BitProcess => IntPtr.Size == 8;
public static bool IsNotWindows => !IsWindows;

public static bool IsPrivilegedProcess => IsUnixAndSuperUser || IsWindowsAndElevated;
private static int s_isPrivilegedProcess = -1;
public static bool IsPrivilegedProcess
{
get
{
if (s_isPrivilegedProcess != -1)
return s_isPrivilegedProcess == 1;

s_isPrivilegedProcess = AdminHelpers.IsProcessElevated() ? 1 : 0;

return s_isPrivilegedProcess == 1;
}
}

public static bool IsMarshalGetExceptionPointersSupported => !IsMonoRuntime && !IsNativeAot;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
Microsoft Visual Studio Solution File, Format Version 12.00

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.5.33103.201
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "System.Private.CoreLib", "..\..\coreclr\System.Private.CoreLib\System.Private.CoreLib.csproj", "{370DCE61-CBDF-466E-91DB-5AE622BF2E52}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestUtilities", "..\Common\tests\TestUtilities\TestUtilities.csproj", "{6E159831-C97C-40FD-AD1A-E8B1EE3E7168}"
Expand Down Expand Up @@ -29,17 +33,23 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "gen", "gen", "{F2FD3769-35C
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Checked|Any CPU = Checked|Any CPU
Checked|x64 = Checked|x64
Checked|x86 = Checked|x86
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86
Checked|Any CPU = Checked|Any CPU
Checked|x64 = Checked|x64
Checked|x86 = Checked|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{370DCE61-CBDF-466E-91DB-5AE622BF2E52}.Checked|Any CPU.ActiveCfg = Checked|x64
{370DCE61-CBDF-466E-91DB-5AE622BF2E52}.Checked|Any CPU.Build.0 = Checked|x64
{370DCE61-CBDF-466E-91DB-5AE622BF2E52}.Checked|x64.ActiveCfg = Checked|x64
{370DCE61-CBDF-466E-91DB-5AE622BF2E52}.Checked|x64.Build.0 = Checked|x64
{370DCE61-CBDF-466E-91DB-5AE622BF2E52}.Checked|x86.ActiveCfg = Checked|x86
{370DCE61-CBDF-466E-91DB-5AE622BF2E52}.Checked|x86.Build.0 = Checked|x86
{370DCE61-CBDF-466E-91DB-5AE622BF2E52}.Debug|Any CPU.ActiveCfg = Debug|x64
{370DCE61-CBDF-466E-91DB-5AE622BF2E52}.Debug|Any CPU.Build.0 = Debug|x64
{370DCE61-CBDF-466E-91DB-5AE622BF2E52}.Debug|x64.ActiveCfg = Debug|x64
Expand All @@ -52,12 +62,9 @@ Global
{370DCE61-CBDF-466E-91DB-5AE622BF2E52}.Release|x64.Build.0 = Release|x64
{370DCE61-CBDF-466E-91DB-5AE622BF2E52}.Release|x86.ActiveCfg = Release|x86
{370DCE61-CBDF-466E-91DB-5AE622BF2E52}.Release|x86.Build.0 = Release|x86
{370DCE61-CBDF-466E-91DB-5AE622BF2E52}.Checked|Any CPU.ActiveCfg = Checked|x64
{370DCE61-CBDF-466E-91DB-5AE622BF2E52}.Checked|Any CPU.Build.0 = Checked|x64
{370DCE61-CBDF-466E-91DB-5AE622BF2E52}.Checked|x64.ActiveCfg = Checked|x64
{370DCE61-CBDF-466E-91DB-5AE622BF2E52}.Checked|x64.Build.0 = Checked|x64
{370DCE61-CBDF-466E-91DB-5AE622BF2E52}.Checked|x86.ActiveCfg = Checked|x86
{370DCE61-CBDF-466E-91DB-5AE622BF2E52}.Checked|x86.Build.0 = Checked|x86
{6E159831-C97C-40FD-AD1A-E8B1EE3E7168}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
{6E159831-C97C-40FD-AD1A-E8B1EE3E7168}.Checked|x64.ActiveCfg = Debug|Any CPU
{6E159831-C97C-40FD-AD1A-E8B1EE3E7168}.Checked|x86.ActiveCfg = Debug|Any CPU
{6E159831-C97C-40FD-AD1A-E8B1EE3E7168}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6E159831-C97C-40FD-AD1A-E8B1EE3E7168}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6E159831-C97C-40FD-AD1A-E8B1EE3E7168}.Debug|x64.ActiveCfg = Debug|Any CPU
Expand All @@ -70,9 +77,9 @@ Global
{6E159831-C97C-40FD-AD1A-E8B1EE3E7168}.Release|x64.Build.0 = Release|Any CPU
{6E159831-C97C-40FD-AD1A-E8B1EE3E7168}.Release|x86.ActiveCfg = Release|Any CPU
{6E159831-C97C-40FD-AD1A-E8B1EE3E7168}.Release|x86.Build.0 = Release|Any CPU
{6E159831-C97C-40FD-AD1A-E8B1EE3E7168}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
{6E159831-C97C-40FD-AD1A-E8B1EE3E7168}.Checked|x64.ActiveCfg = Debug|Any CPU
{6E159831-C97C-40FD-AD1A-E8B1EE3E7168}.Checked|x86.ActiveCfg = Debug|Any CPU
{D7C16DED-127A-4CBB-BBCF-DF133816413B}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
{D7C16DED-127A-4CBB-BBCF-DF133816413B}.Checked|x64.ActiveCfg = Debug|Any CPU
{D7C16DED-127A-4CBB-BBCF-DF133816413B}.Checked|x86.ActiveCfg = Debug|Any CPU
{D7C16DED-127A-4CBB-BBCF-DF133816413B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D7C16DED-127A-4CBB-BBCF-DF133816413B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D7C16DED-127A-4CBB-BBCF-DF133816413B}.Debug|x64.ActiveCfg = Debug|Any CPU
Expand All @@ -85,9 +92,9 @@ Global
{D7C16DED-127A-4CBB-BBCF-DF133816413B}.Release|x64.Build.0 = Release|Any CPU
{D7C16DED-127A-4CBB-BBCF-DF133816413B}.Release|x86.ActiveCfg = Release|Any CPU
{D7C16DED-127A-4CBB-BBCF-DF133816413B}.Release|x86.Build.0 = Release|Any CPU
{D7C16DED-127A-4CBB-BBCF-DF133816413B}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
{D7C16DED-127A-4CBB-BBCF-DF133816413B}.Checked|x64.ActiveCfg = Debug|Any CPU
{D7C16DED-127A-4CBB-BBCF-DF133816413B}.Checked|x86.ActiveCfg = Debug|Any CPU
{63783D6D-0848-4303-8E7A-BBB7F65DCE9E}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
{63783D6D-0848-4303-8E7A-BBB7F65DCE9E}.Checked|x64.ActiveCfg = Debug|Any CPU
{63783D6D-0848-4303-8E7A-BBB7F65DCE9E}.Checked|x86.ActiveCfg = Debug|Any CPU
{63783D6D-0848-4303-8E7A-BBB7F65DCE9E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{63783D6D-0848-4303-8E7A-BBB7F65DCE9E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{63783D6D-0848-4303-8E7A-BBB7F65DCE9E}.Debug|x64.ActiveCfg = Debug|Any CPU
Expand All @@ -100,9 +107,9 @@ Global
{63783D6D-0848-4303-8E7A-BBB7F65DCE9E}.Release|x64.Build.0 = Release|Any CPU
{63783D6D-0848-4303-8E7A-BBB7F65DCE9E}.Release|x86.ActiveCfg = Release|Any CPU
{63783D6D-0848-4303-8E7A-BBB7F65DCE9E}.Release|x86.Build.0 = Release|Any CPU
{63783D6D-0848-4303-8E7A-BBB7F65DCE9E}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
{63783D6D-0848-4303-8E7A-BBB7F65DCE9E}.Checked|x64.ActiveCfg = Debug|Any CPU
{63783D6D-0848-4303-8E7A-BBB7F65DCE9E}.Checked|x86.ActiveCfg = Debug|Any CPU
{24605C4D-2465-433D-A393-45CB950E0834}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
{24605C4D-2465-433D-A393-45CB950E0834}.Checked|x64.ActiveCfg = Debug|Any CPU
{24605C4D-2465-433D-A393-45CB950E0834}.Checked|x86.ActiveCfg = Debug|Any CPU
{24605C4D-2465-433D-A393-45CB950E0834}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{24605C4D-2465-433D-A393-45CB950E0834}.Debug|Any CPU.Build.0 = Debug|Any CPU
{24605C4D-2465-433D-A393-45CB950E0834}.Debug|x64.ActiveCfg = Debug|Any CPU
Expand All @@ -115,9 +122,9 @@ Global
{24605C4D-2465-433D-A393-45CB950E0834}.Release|x64.Build.0 = Release|Any CPU
{24605C4D-2465-433D-A393-45CB950E0834}.Release|x86.ActiveCfg = Release|Any CPU
{24605C4D-2465-433D-A393-45CB950E0834}.Release|x86.Build.0 = Release|Any CPU
{24605C4D-2465-433D-A393-45CB950E0834}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
{24605C4D-2465-433D-A393-45CB950E0834}.Checked|x64.ActiveCfg = Debug|Any CPU
{24605C4D-2465-433D-A393-45CB950E0834}.Checked|x86.ActiveCfg = Debug|Any CPU
{3969DA9E-6C7D-421D-ABCC-BD02DFA36DA4}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
{3969DA9E-6C7D-421D-ABCC-BD02DFA36DA4}.Checked|x64.ActiveCfg = Debug|Any CPU
{3969DA9E-6C7D-421D-ABCC-BD02DFA36DA4}.Checked|x86.ActiveCfg = Debug|Any CPU
{3969DA9E-6C7D-421D-ABCC-BD02DFA36DA4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3969DA9E-6C7D-421D-ABCC-BD02DFA36DA4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3969DA9E-6C7D-421D-ABCC-BD02DFA36DA4}.Debug|x64.ActiveCfg = Debug|Any CPU
Expand All @@ -130,9 +137,9 @@ Global
{3969DA9E-6C7D-421D-ABCC-BD02DFA36DA4}.Release|x64.Build.0 = Release|Any CPU
{3969DA9E-6C7D-421D-ABCC-BD02DFA36DA4}.Release|x86.ActiveCfg = Release|Any CPU
{3969DA9E-6C7D-421D-ABCC-BD02DFA36DA4}.Release|x86.Build.0 = Release|Any CPU
{3969DA9E-6C7D-421D-ABCC-BD02DFA36DA4}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
{3969DA9E-6C7D-421D-ABCC-BD02DFA36DA4}.Checked|x64.ActiveCfg = Debug|Any CPU
{3969DA9E-6C7D-421D-ABCC-BD02DFA36DA4}.Checked|x86.ActiveCfg = Debug|Any CPU
{79F03506-0B08-46BB-B99D-ABDBA8CFFFAC}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
{79F03506-0B08-46BB-B99D-ABDBA8CFFFAC}.Checked|x64.ActiveCfg = Debug|Any CPU
{79F03506-0B08-46BB-B99D-ABDBA8CFFFAC}.Checked|x86.ActiveCfg = Debug|Any CPU
{79F03506-0B08-46BB-B99D-ABDBA8CFFFAC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{79F03506-0B08-46BB-B99D-ABDBA8CFFFAC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{79F03506-0B08-46BB-B99D-ABDBA8CFFFAC}.Debug|x64.ActiveCfg = Debug|Any CPU
Expand All @@ -145,9 +152,9 @@ Global
{79F03506-0B08-46BB-B99D-ABDBA8CFFFAC}.Release|x64.Build.0 = Release|Any CPU
{79F03506-0B08-46BB-B99D-ABDBA8CFFFAC}.Release|x86.ActiveCfg = Release|Any CPU
{79F03506-0B08-46BB-B99D-ABDBA8CFFFAC}.Release|x86.Build.0 = Release|Any CPU
{79F03506-0B08-46BB-B99D-ABDBA8CFFFAC}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
{79F03506-0B08-46BB-B99D-ABDBA8CFFFAC}.Checked|x64.ActiveCfg = Debug|Any CPU
{79F03506-0B08-46BB-B99D-ABDBA8CFFFAC}.Checked|x86.ActiveCfg = Debug|Any CPU
{7D67652E-7840-42AF-A830-F9A336AD8CBE}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
{7D67652E-7840-42AF-A830-F9A336AD8CBE}.Checked|x64.ActiveCfg = Debug|Any CPU
{7D67652E-7840-42AF-A830-F9A336AD8CBE}.Checked|x86.ActiveCfg = Debug|Any CPU
{7D67652E-7840-42AF-A830-F9A336AD8CBE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7D67652E-7840-42AF-A830-F9A336AD8CBE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7D67652E-7840-42AF-A830-F9A336AD8CBE}.Debug|x64.ActiveCfg = Debug|Any CPU
Expand All @@ -160,9 +167,9 @@ Global
{7D67652E-7840-42AF-A830-F9A336AD8CBE}.Release|x64.Build.0 = Release|Any CPU
{7D67652E-7840-42AF-A830-F9A336AD8CBE}.Release|x86.ActiveCfg = Release|Any CPU
{7D67652E-7840-42AF-A830-F9A336AD8CBE}.Release|x86.Build.0 = Release|Any CPU
{7D67652E-7840-42AF-A830-F9A336AD8CBE}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
{7D67652E-7840-42AF-A830-F9A336AD8CBE}.Checked|x64.ActiveCfg = Debug|Any CPU
{7D67652E-7840-42AF-A830-F9A336AD8CBE}.Checked|x86.ActiveCfg = Debug|Any CPU
{38416350-0E7B-4201-8B7E-3FA80FCFA81A}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
{38416350-0E7B-4201-8B7E-3FA80FCFA81A}.Checked|x64.ActiveCfg = Debug|Any CPU
{38416350-0E7B-4201-8B7E-3FA80FCFA81A}.Checked|x86.ActiveCfg = Debug|Any CPU
{38416350-0E7B-4201-8B7E-3FA80FCFA81A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{38416350-0E7B-4201-8B7E-3FA80FCFA81A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{38416350-0E7B-4201-8B7E-3FA80FCFA81A}.Debug|x64.ActiveCfg = Debug|Any CPU
Expand All @@ -175,9 +182,9 @@ Global
{38416350-0E7B-4201-8B7E-3FA80FCFA81A}.Release|x64.Build.0 = Release|Any CPU
{38416350-0E7B-4201-8B7E-3FA80FCFA81A}.Release|x86.ActiveCfg = Release|Any CPU
{38416350-0E7B-4201-8B7E-3FA80FCFA81A}.Release|x86.Build.0 = Release|Any CPU
{38416350-0E7B-4201-8B7E-3FA80FCFA81A}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
{38416350-0E7B-4201-8B7E-3FA80FCFA81A}.Checked|x64.ActiveCfg = Debug|Any CPU
{38416350-0E7B-4201-8B7E-3FA80FCFA81A}.Checked|x86.ActiveCfg = Debug|Any CPU
{58E24DB7-4207-49F8-BC73-A665A2A961A6}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
{58E24DB7-4207-49F8-BC73-A665A2A961A6}.Checked|x64.ActiveCfg = Debug|Any CPU
{58E24DB7-4207-49F8-BC73-A665A2A961A6}.Checked|x86.ActiveCfg = Debug|Any CPU
{58E24DB7-4207-49F8-BC73-A665A2A961A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{58E24DB7-4207-49F8-BC73-A665A2A961A6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{58E24DB7-4207-49F8-BC73-A665A2A961A6}.Debug|x64.ActiveCfg = Debug|Any CPU
Expand All @@ -190,26 +197,26 @@ Global
{58E24DB7-4207-49F8-BC73-A665A2A961A6}.Release|x64.Build.0 = Release|Any CPU
{58E24DB7-4207-49F8-BC73-A665A2A961A6}.Release|x86.ActiveCfg = Release|Any CPU
{58E24DB7-4207-49F8-BC73-A665A2A961A6}.Release|x86.Build.0 = Release|Any CPU
{58E24DB7-4207-49F8-BC73-A665A2A961A6}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
{58E24DB7-4207-49F8-BC73-A665A2A961A6}.Checked|x64.ActiveCfg = Debug|Any CPU
{58E24DB7-4207-49F8-BC73-A665A2A961A6}.Checked|x86.ActiveCfg = Debug|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{370DCE61-CBDF-466E-91DB-5AE622BF2E52} = {269A342C-D693-495C-8A07-11E08C881F6B}
{63783D6D-0848-4303-8E7A-BBB7F65DCE9E} = {269A342C-D693-495C-8A07-11E08C881F6B}
{6E159831-C97C-40FD-AD1A-E8B1EE3E7168} = {21E11D21-3706-49C7-ACA7-10BA9A021908}
{24605C4D-2465-433D-A393-45CB950E0834} = {21E11D21-3706-49C7-ACA7-10BA9A021908}
{D7C16DED-127A-4CBB-BBCF-DF133816413B} = {61AC03AE-7090-458C-A3AB-5A4CCFF6AD08}
{79F03506-0B08-46BB-B99D-ABDBA8CFFFAC} = {61AC03AE-7090-458C-A3AB-5A4CCFF6AD08}
{58E24DB7-4207-49F8-BC73-A665A2A961A6} = {61AC03AE-7090-458C-A3AB-5A4CCFF6AD08}
{63783D6D-0848-4303-8E7A-BBB7F65DCE9E} = {269A342C-D693-495C-8A07-11E08C881F6B}
{24605C4D-2465-433D-A393-45CB950E0834} = {21E11D21-3706-49C7-ACA7-10BA9A021908}
{3969DA9E-6C7D-421D-ABCC-BD02DFA36DA4} = {F2FD3769-35C6-481A-AF35-9BDDEE550B54}
{79F03506-0B08-46BB-B99D-ABDBA8CFFFAC} = {61AC03AE-7090-458C-A3AB-5A4CCFF6AD08}
{7D67652E-7840-42AF-A830-F9A336AD8CBE} = {F2FD3769-35C6-481A-AF35-9BDDEE550B54}
{38416350-0E7B-4201-8B7E-3FA80FCFA81A} = {F2FD3769-35C6-481A-AF35-9BDDEE550B54}
{58E24DB7-4207-49F8-BC73-A665A2A961A6} = {61AC03AE-7090-458C-A3AB-5A4CCFF6AD08}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {5AB76D2F-E758-4FA1-83E4-E5645849CC34}
EndGlobalSection
GlobalSection(SharedMSBuildProjectFiles) = preSolution
..\System.Private.CoreLib\src\System.Private.CoreLib.Shared.projitems*{370dce61-cbdf-466e-91db-5ae622bf2e52}*SharedItemsImports = 5
EndGlobalSection
EndGlobal