Eu não fiz muitos testes, mas o seguinte script do PowerShell deve funcionar:
param([string]$path)
get-childitem $path -recurse | Foreach {
$file=$_;get-acl $($_.FullName)} | Foreach {
[bool]$SystemHasAccess = $false
$_.GetAccessRules($True,$True,[Security.Principal.SecurityIdentifier]) | Foreach {
if ($_.IdentityReference -eq "S-1-5-18") { $SystemHasAccess = $true } # system sid
if ($_.IdentityReference -eq "S-1-1-0") { $SystemHasAccess = $true } # everyone sid
}
if ($SystemHasAccess -eq $false)
{
write-host "System has no access to $($file.FullName)"
}
}
copie o código em um arquivo, diga "FindFilesWithoutSystemAccess.ps1" e, em seguida, chame-o fornecendo o caminho que você deseja pesquisar:
FindFilesWithoutSystemAccess.ps1 -path C:\
O script percorre todos os arquivos sob o caminho, incluindo todos os arquivos em subdiretórios. Para cada arquivo, ele percorre todas as entradas de controle de acesso na lista de controle de acesso do arquivo. Se nenhum deles corresponder ao sid interno do sistema (S-1-5-18), imprime o nome completo do arquivo.
É possível que um arquivo tenha uma ACE para o System, mas é uma ACE negativa, o que significa que o script acima não captura o arquivo e o System ainda não consegue acessá-lo. No entanto, o cenário é improvável e você pode usar um script semelhante para encontrar esses arquivos.