Saya belum melakukan banyak pengujian, tetapi skrip PowerShell berikut harus berfungsi:
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)"
}
}
salin kode ke file, katakan "FindFilesWithoutSystemAccess.ps1", lalu panggil dengan menyediakan jalur yang ingin Anda cari:
FindFilesWithoutSystemAccess.ps1 -path C:\
Script loop melalui semua file di bawah path termasuk file dalam sub-direktori. Untuk setiap file itu loop melalui semua entri kontrol akses dalam daftar kontrol akses file. Jika tidak ada yang cocok dengan sisi internal sistem (S-1-5-18), ia mencetak nama lengkap file.
Ada kemungkinan bahwa file memiliki ACE untuk Sistem, tetapi itu adalah ACE tolak, yang berarti skrip di atas tidak menangkap file dan Sistem masih tidak dapat mengaksesnya. Namun skenario tidak mungkin dan Anda dapat menggunakan skrip yang mirip untuk menemukan file tersebut.
Set-ExecutionPolicy Unrestricted -Scope Process
dan.\FindFilesWithoutSystemAccess.ps1 -path C:\cygwin\home\Chloe
memberikan kesalahan ini:.\FindFilesWithoutSystemAccess.ps1 : Access to the path 'C:\cygwin\home\Chloe\FindFilesWithoutSystemAccess.ps1' is denied. At line:1 char:1
tmp.ps1
dalam editor teks, dan menyimpannya sekali, tetapi tidak lagi! Saya harus pergi dan memodifikasi properti file di Explorer untuk membaca / menulisnya lagi!get-childitem : The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
kesalahan.get-acl : The specified wildcard character pattern is not valid: Purple Motion - Unreal ][.s3m At C:\cygwin\home\Chloe\FindFilesWithoutSystemAccess.ps1:4 char:14 + $file=$_;get-acl "$($_.FullName)"}
. Saya mencoba menambahkan tanda kutip, tetapi itu tidak membantu.icacls C:\Users\Chloe\Downloads\setup.log
kembaliC:\Users\Chloe\Downloads\setup.log xps\Chloe:(R,W,D,WDAC,WO) xps\None:(R) Everyone:(R)