Summary of the new feature / enhancement
class SystemPolicy
{
public static SystemEnforcementMode GetSystemLockdownPolicy();
public static SystemEnforcementMode GetLockdownPolicy(string path, SafeHandle handle);
public static SystemScriptFileEnforcement GetFilePolicyEnforcement(string filePath, FileStream fileStream);
}
SystemPolicy.GetSystemLockdownPolicy() and SystemPolicy.GetLockdownPolicy(string, SafeHandle) are useful methods for a binary module when the module needs to take into account the WDAC environment, such as Microsoft.PowerShell.ThreadJob. However, when building ThreadJob module against PowerShellStandard.Library, we have to call those 2 methods by reflection.
I understand they are not included today because those APIs don't exist on Unix platforms. PowerShell/PowerShell#25051 make those methods available on Unix platforms as stubs which always return SystemEnforcementMode.None. So, after 7.5 reaches EOL, we can publish a new PowerShellStandard.Library package to include those 2 methods.
As for the GetFilePolicyEnforcement method, it's a little special (see PowerShell/PowerShell#25051 (comment)).
The GetFilePolicyEnforcement method is not available in Windows 5.1 on Win10 or Windows Server 2022. So, we probably should only include GetSystemLockdownPolicy and GetLockdownPolicy in PowerShellStandard.Library for the short/middle term. After Windows 10 and Windows Server 2022 reach EOL (or when the method becomes available on them) we can then add the GetFilePolicyEnforcement method to the package.
Proposed technical implementation details (optional)
No response