Resumo rápido: eu sou um funileiro e odeio clicar na GUI, não preciso $Recycle.Bin
, então quero desativá-lo usando Set-ItemProperty
para modificar o registro.
Como no título, quero usar regedit.exe (eu sei reg add
e tal, mas não uso reg
, em vez disso, uso Set-ItemProperty
e seus coortes para fazer o trabalho e gostaria de colocar todos os comandos em um arquivo) e gpedit.msc ( novamente registro, pois as configurações da Diretiva de Grupo são armazenadas no registro) para desabilitar $Recycle.Bin
para todas as unidades e exibir a caixa de confirmação de exclusão por padrão, isso significa modificar HKEY_LOCAL_MACHINE
e HKEY_CURRENT_USER
.
Resumindo, o efeito desejado é, quando qualquer usuário (todas as contas de usuário são contas de administrador de minha propriedade, pois sou o único usuário, porque as contas de usuário podem ficar ruins e seria difícil consertar as contas uma vez que estão ruins, e eles são muito propensos a ficarem ruins se ocorrer um blecaute enquanto o computador estiver em execução...) clica para excluir um arquivo/arquivos em qualquer unidade, uma caixa de confirmação de exclusão aparece; Após a confirmação, o(s) arquivo(s) é(ão) deletado(s) diretamente SEM passar por $Recycle.Bin . E não há essa pasta $Recycle.Bin não-deletável presente em nenhum diretório raiz das unidades.
Claro que eu sei disso:
E é exatamente isso que estou tentando evitar. Porque eu tenho que clicar manualmente na Don't move files to the Recycle Bin...
caixa de seleção para cada unidade. Também não consigo me livrar dessa $Recycle.Bin
pasta, se eu a excluir, ela simplesmente reaparece magicamente depois F5...
Encontrei esta chave de registro e valor depois de pesquisar no Google:
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket]
"NukeOnDelete"=dword:00000001
Mas a fonte diz que se aplica ao Windows 7, nunca usei o Windows 7, esse valor impede a recriação de $Recycle.Bin? Ainda funciona no Windows 10?
Também encontrei isso:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"NoRecycleFiles"=dword:00000001
Mas quando tentei abrir esse caminho no regedit, um som de erro é reproduzido e a localização atual não é alterada, então o caminho não existe ...
E isto:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"ConfirmFileDelete"=dword:00000001
Isso parece habilitar a "caixa de diálogo de confirmação de exclusão", o que eu não sei é, essa configuração afeta todas as unidades? E ele mostra a caixa de diálogo e, em seguida, basta mover o arquivo para $Recycle.Bin após a confirmação se o $Recycle.Bin não estiver desabilitado?
Como desabilitar $Recycle.Bin para todos os usuários e todas as unidades por padrão? E como evitar que $Recycle.Bin retorne? Qualquer ajuda é apreciada.
Atualizar
É estranho, eu habilitei Do not move deleted files to the Recycle Bin
a política, ainda consigo acessar HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer no regedit... Basta pressionar F5e encontrar a tecla...
Atualização1
Com todas as configurações mencionadas acima ativadas, tentei excluir as pastas $Recycle.Bin com o Explorer, resultado: elas reaparecem após pressionarF5
Usado rd X:\$Recycle.Bin /s /q
e eles não se repetiram após várias F5prensas até agora, mas não sei por que, pensei que teria o mesmo efeito que excluí-lo no explorer.exe ...
Mas o que Don't move file to the Recycle Bin. Remove files immediately when deleted.
faz? Qual chave de registro e valor ele grava? Alguém pode me dizer?
As pastas $Recycle.Bin reapareceram... Confirmei, clicando na pasta "Lixeira" irá recriar as pastas $Recycle.Bin...
Eu usei procmon e obtive isso:
Parece que Don't move...
define nukeondelete como ativado na unidade atual.
Eu escrevi um script do PowerShell para desabilitar automaticamente a Lixeira em todas as unidades, usando Get-Volume e Set-ItemProperty;
Este é o script que mencionei, posto aqui caso mais alguém queira fazer:
$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
Agora estou procurando maneiras de impedir a criação de $Recycle.Bin, estou pensando em políticas de grupo e opções de segurança.
Eu encontrei isso: **GPO - Como bloquear a criação de pastas e arquivos no diretório raiz no Windows 10
Não sei se funcionará (estou apenas tentando bloquear a lixeira) e como fazê-lo com as opções de segurança?
Justo, tentei usar a Diretiva de Grupo para desabilitar a criação de pastas, mas não há objeto de diretiva de grupo do Sistema de Arquivos presente em
Local Computer Policy
>>Computer Configuration
>>Windows Settings
>>Security Settings
e não sei como criá-lo ...eu tentei usar
icacls C:\$Recycle.Bin /deny SYSTEM:(OI)(CI)(F)
Então eu deletei a pasta via
Remove-Item
, depois de pressionar F5a pasta não reapareceu, mas abrirRecycle Bin
na área de trabalho imediatamente a fez reaparecer.Portanto, a pasta $Recycle.Bin é removida permanentemente, até que você reabra a
Recycle Bin
pasta na área de trabalho, portanto, basta remover o ícone para garantir que a pasta não seja recriada;Com meus comandos anteriores usados para habilitar
NukeOnDelete
,NoRecycleFiles
eConfirmFileDelete
para desabilitarMaxCapacity
, o código final:Ele faz bem o que eu pretendia, escrevi todas essas linhas para medidas extras para garantir que o $Recycle.Bin esteja desabilitado corretamente. Vou colocar o código em um único arquivo .ps1 junto com muitos outros códigos e executá-lo...
Confirmado, reiniciar o explorer.exe também fará com que a pasta $Recycle.Bin reapareça, mas seja o que for, pelo menos, eu possa usar este script para desabilitar a Lixeira em todas as unidades automaticamente, acho que é uma conquista ...