C:\Program Files\WindowsApps 配下の多くのフォルダやファイルには、目に見えないセキュリティ設定がかかっています。
フォルダのプロパティの[セキュリティ]タブで許可されているユーザーであっても、操作が「アクセス拒否」されてしまう場合があります。
管理者権限があるユーザーであっても、SYSTEMアカウントのサービスであっても、その「アクセス拒否」を免れることはできません。
そのセキュリティ設定とは、 「 プロセス信頼ラベル 」 です。
このセキュリティ設定は、プロパティ画面やicaclsなどのコマンド類で確認できません。
プロセス信頼ラベルは、オブジェクトのセキュリティ属性を格納している
SECURITY_DESCRIPTORの、以下の図の位置に配置されています。

上記の図での「LABEL_SECURITY_INFORMATION」は「整合性レベル」であり、こちらはプロパティ画面の[セキュリティ]や、icacls コマンドで確認できるものです。
「プロセス信頼ラベル」はこれと並ぶ位置にあります。
「プロセス信頼ラベル」はACEに格納されています。
ACEの形式は、その他のACEと同じです。
typedef struct _SYSTEM_PROCESS_TRUST_LABEL_ACE{
ACE_HEADER Header;
ACCESS_MASK Mask;
DWORD SidStart;
}SYSTEM_PROCESS_TRUST_LABEL_ACE, *PSYSTEM_PROCESS_TRUST_LABEL_ACE;
ACE_HEADER の、AceTypeには、 SYSTEM_PROCESS_TRUST_LABEL_ACE_TYPE
が設定されています。
#define SYSTEM_PROCESS_TRUST_LABEL_ACE_TYPE (0x14)
ACEの要素にあるSIDは、タイプやレベルの高さを表す独特のSIDになっています。
S-1-19-XXX-YYYY
XXXの位置はタイプを表し、以下の種類があります。
0: None
512:Light
1024:Full
#define SECURITY_PROCESS_PROTECTION_TYPE_FULL_RID (000400L)
#define SECURITY_PROCESS_PROTECTION_TYPE_LITE_RID (000200L)
#define SECURITY_PROCESS_PROTECTION_TYPE_NONE_RID (000000L)
YYYYの位置はレベルを表し、以下の種類があります。
0:None
1024:Authenticode
1536:Antimalware
2048:App
4096:Windows
8192:WinTcb
#define SECURITY_PROCESS_PROTECTION_LEVEL_WINTCB_RID (002000L)
#define SECURITY_PROCESS_PROTECTION_LEVEL_WINDOWS_RID (001000L)
#define SECURITY_PROCESS_PROTECTION_LEVEL_APP_RID (000800L)
#define SECURITY_PROCESS_PROTECTION_LEVEL_ANTIMALWARE_RID (000600L)
#define SECURITY_PROCESS_PROTECTION_LEVEL_AUTHENTICODE_RID (000400L)
#define SECURITY_PROCESS_PROTECTION_LEVEL_NONE_RID (000000L)(000000L)
XXXもYYYYも、数値が大きい方が「強い」ことを意味します。
両方の値が小さいプロセスからのアクセスは、ACE内のACCESS_MASKで許可
された操作しか行えません。
なお、「プロセス信頼ラベル」を持っているのは、smss.exeやcsrss.exeなどのWindowsのシステムか、ウイルス対策ソフトなどの保護プロセスだけです。
それ以外のプロセスの「プロセス信頼ラベル」はありません。
つまり 「 S-1-19-0-0 」 と同等として扱われます。

