Não é possível garantir que seja a maneira mais eficiente, mas você pode usar o Powershell para concluir essa tarefa. Se você conhece a área geral, ela ficará muito mais rápida. Basta substituir o Location_to_Search pelo seu caminho. Como "C: \ Arquivos de Programas".
$Date = (Get-Date).AddDays(-30)
Get-ChildItem -Path <Location_to_Search> -Recurse | Where {$_.PSIsContainer -and $_.CreationTime -lt $Date}
Este código cria uma variável Date obtendo a data atual e subtraindo 30 dias. Então vai e pega todos os diretórios / arquivos no local que você especificou e recursivamente os procura. Em seguida, canaliza o STDOUT para uma instrução Where que verifica se o item é um diretório e o horário de criação foi nos últimos 30 dias.