Xeн*_*вϵς 5 windows-registry recycle-bin group-policy windows-10
快速总结:我是一个修补匠,我讨厌点击 GUI,我不需要,$Recycle.Bin所以我想通过使用Set-ItemProperty修改注册表来禁用它。
如标题所示,我想使用 regedit.exe (我知道reg add这些东西,但我不使用reg,而是使用Set-ItemProperty及其同类来完成工作,我想将所有命令放在一个文件中)和 gpedit.msc (再次注册表(因为组策略设置存储在注册表中)以禁用$Recycle.Bin所有驱动器并默认显示删除确认框,这意味着同时修改HKEY_LOCAL_MACHINE和HKEY_CURRENT_USER。
简而言之,期望的效果是,当任何用户(所有用户帐户都是我拥有的管理员帐户,因为我是唯一的用户,因为用户帐户可能会变坏,并且帐户一旦坏了就很难修复),如果在计算机运行时发生停电,它们很容易损坏...)单击删除任何驱动器上的一个或多个文件,会弹出删除确认框;确认后,文件将被直接删除,而不经过 $Recycle.Bin。并且驱动器的任何根目录中都不存在这个不可删除的 $Recycle.Bin 文件夹。
我当然知道这一点:
这正是我想要避免的。因为我必须手动单击Don't move files to the Recycle Bin...每个驱动器的复选框。另外我无法删除这个文件夹,如果我删除它,它会在...$Recycle.Bin之后神奇地重新出现。F5
经过一番谷歌搜索后,我找到了这个注册表项和值:
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket]
"NukeOnDelete"=dword:00000001
Run Code Online (Sandbox Code Playgroud)
但消息来源说它适用于 Windows 7,我从未使用过 Windows 7,该值是否会阻止 $Recycle.Bin 的重新创建?它仍然可以在 Windows 10 上运行吗?
我还发现了这个:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"NoRecycleFiles"=dword:00000001
Run Code Online (Sandbox Code Playgroud)
但是当我尝试在 regedit 中打开该路径时,会播放错误声音,并且当前位置不会更改,因此该路径不存在......
和这个:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"ConfirmFileDelete"=dword:00000001
Run Code Online (Sandbox Code Playgroud)
这似乎启用了“删除确认对话框”,我不知道的是,此设置是否会影响所有驱动器?它是否显示对话框,然后在确认后如果 $Recycle.Bin 未禁用,则将文件移动到 $Recycle.Bin ?
如何默认禁用所有用户和所有驱动器的 $Recycle.Bin?以及如何防止$Recycle.Bin返回?任何帮助表示赞赏。
奇怪的是,我已经启用了Do not move deleted files to the Recycle Bin策略,仍然可以在regedit中访问HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer...只是按下F5并找到了该键...
启用所有上述设置后,我尝试使用资源管理器删除 $Recycle.Bin 文件夹,结果:按后它们重新出现F5
使用过,到目前为止,rd X:\$Recycle.Bin /s /q多次按后它们没有再次出现F5,但我不知道为什么,我认为它会与在explorer.exe中删除它具有相同的效果...
但它有什么Don't move file to the Recycle Bin. Remove files immediately when deleted.作用呢?它写入什么注册表项和值?谁能告诉我吗?
$Recycle.Bin 文件夹已重新出现...我已确认,单击“回收站”文件夹将重新创建 $Recycle.Bin 文件夹...
似乎Don't move...将 nukeondelete 设置为在当前驱动器上启用。
我编写了一个 PowerShell 脚本,使用 Get-Volume 和 Set-ItemProperty 自动禁用所有驱动器上的回收站;
这是我提到的脚本,我将其发布在这里,以防其他人可能想要这样做:
$volumes=Get-Volume | where {$_.FileSystem -eq "NTFS"}
$Drives=foreach ($volume in $volumes) {
$DriveLetter=$Volume.DriveLetter
[string]$ObjectId=($Volume.ObjectId | Select-String -Pattern "Volume{[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}}\\").Matches.Value.SubString(6,38)
Remove-Item -Path $('{0}:\$Recycle.Bin' -f $DriveLetter) -Force -Recurse -ErrorAction SilentlyContinue
New-Item -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket\Volume\$ObjectId" -ErrorAction SilentlyContinue | Out-Null
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket\Volume\$ObjectId" -Name NukeOnDelete -Type DWord -Value 1
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket\Volume\$ObjectId" -Name MaxCapacity -Type DWord -Value 0
}
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket" -Name NukeOnDelete -Type DWord -Value 1
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket" -Name MaxCapacity -Type DWord -Value 0
Run Code Online (Sandbox Code Playgroud)
我现在正在寻找防止创建 $Recycle.Bin 的方法,我正在考虑组策略和安全选项。
我发现了这个:**GPO - 如何阻止在 Windows 10 的根目录中创建文件夹和文件
不知道它是否会起作用(我只是想阻止回收站),以及如何使用安全选项来做到这一点?
Local Computer Policy公平地说,我尝试使用组策略来禁用文件夹创建,但是>> Computer Configuration>> Windows Settings>>中没有文件系统组策略对象Security Settings,而且我不知道如何创建它......
我尝试使用icacls C:\$Recycle.Bin /deny SYSTEM:(OI)(CI)(F)
然后我通过 删除了该文件夹Remove-Item,按后F5该文件夹没有重新出现,但Recycle Bin在桌面上打开立即使其重新出现。
因此,$Recycle.Bin 文件夹将被永久删除,直到您Recycle Bin在桌面上重新打开该文件夹为止,因此只需删除图标即可确保该文件夹不会被重新创建;
根据我之前用于启用NukeOnDelete、禁用NoRecycleFiles和ConfirmFileDelete禁用的命令MaxCapacity,最终代码:
New-Item -Path "HKLM:\Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket" -ErrorAction SilentlyContinue | Out-Null
Set-ItemProperty -Path "HKLM:\Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket" -Name "NukeOnDelete" -Type DWord -Value 1
New-Item -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket" -ErrorAction SilentlyContinue | Out-Null
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket" -Name "NukeOnDelete" -Type DWord -Value 1
New-Item -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" -ErrorAction SilentlyContinue | Out-Null
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" -Name "NoRecycleFiles" -Type DWord -Value 1
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" -Name "ConfirmFileDelete" -Type DWord -Value 1
New-Item -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\NonEnum" -ErrorAction SilentlyContinue | Out-Null
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\NonEnum" -Name "{645FF040-5081-101B-9F08-00AA002F954E}" -Type DWord -Value 1
Remove-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{645FF040-5081-101B-9F08-00AA002F954E}" -Force -Recurse -ErrorAction SilentlyContinue
$volumes=Get-Volume | where {$_.FileSystem -eq "NTFS"}
$Drives=foreach ($volume in $volumes) {
$DriveLetter=$Volume.DriveLetter
[string]$ObjectId=($Volumes[0].ObjectId | Select-String -Pattern "Volume{[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}}\\").Matches.Value.SubString(6,38)
Remove-Item -Path $('{0}:\$Recycle.Bin' -f $DriveLetter) -Force -Recurse -ErrorAction SilentlyContinue
New-Item -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket\Volume\$ObjectId" -ErrorAction SilentlyContinue | Out-Null
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket\Volume\$ObjectId" -Name NukeOnDelete -Type DWord -Value 1
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket\Volume\$ObjectId" -Name MaxCapacity -Type DWord -Value 0
}
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket" -Name NukeOnDelete -Type DWord -Value 1
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket" -Name MaxCapacity -Type DWord -Value 0
Run Code Online (Sandbox Code Playgroud)
它很好地实现了我的意图,我编写了所有这些行以采取额外措施,以确保 $Recycle.Bin 被正确禁用。我会将代码与许多其他代码一起放入一个 .ps1 文件中并运行它...
确认,重新启动explorer.exe也会使$Recycle.Bin文件夹重新出现,但无论如何,至少,我可以使用这个脚本自动禁用所有驱动器上的回收站,我认为这是一个成就......
| 归档时间: |
|
| 查看次数: |
6179 次 |
| 最近记录: |