快速总结:我是一个修补匠,我讨厌点击 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
但是消息来源说它适用于 Windows 7,我从未使用过 Windows 7,该值是否会阻止 $Recycle.Bin 的重新创建?它仍然适用于 Windows 10 吗?
我还发现了这个:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"NoRecycleFiles"=dword:00000001
但是,当我尝试在 regedit 中打开该路径时,会播放错误声音并且当前位置未更改,因此路径不存在...
和这个:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"ConfirmFileDelete"=dword:00000001
这似乎启用了“删除确认对话框”,我不知道的是,这个设置会影响所有驱动器吗?它是否显示对话框,然后在确认 $Recycle.Bin 未禁用后将文件移动到 $Recycle.Bin 吗?
如何默认为所有用户和所有驱动器禁用 $Recycle.Bin?以及如何防止 $Recycle.Bin 返回?任何帮助表示赞赏。
更新
奇怪的是,我启用Do not move deleted files to the Recycle Bin
了策略,仍然可以在注册表中访问 HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer... 刚按下F5并找到了键...
更新1
启用上述所有设置后,我尝试使用资源管理器删除 $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
我现在正在寻找防止创建 $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
它按照我的意图做得很好,我编写了所有这些行以采取额外措施以确保 $Recycle.Bin 被正确禁用。我会将代码与许多其他代码一起放在一个 .ps1 文件中并运行它...
确认,重启 explorer.exe 也会让 $Recycle.Bin 文件夹重新出现,但无论如何,至少,我可以使用这个脚本自动禁用所有驱动器上的回收站,我认为这是一个成就......