fundo
O Windows Explorer mantém uma lista de operações de arquivo para que você possa desfazê-las (10 operações até XP e 32 no Vista). Você pode ver a última operação sem executá-la, abrindo o menu Editar e realçando o comando Desfazer sem selecioná-lo e olhando para a barra de status (embora mesmo assim, muitas vezes não funcione e apenas mostre uma sequência em branco na barra de status) .
Problema
Infelizmente, isso não apenas mostra a operação na barra de status, que por padrão não está ativada, mas mostra apenas a última operação. Pior ainda, mostra apenas a operação e o nome do arquivo , não o (s) caminho (s).
Cenário de casos de uso
Um exemplo de uso é que se você está renomeando e movendo-se um monte de arquivos, especialmente de nome semelhante arquivos como download1.png
, download2.png
, etc., em seguida, perceber que você esqueceu de mover um dos arquivos após renomeá-lo. Ver a lista dos últimos nomes de arquivos e caminhos modificados permitiria descobrir qual deles estava faltando, sem ter que desfazer todas as operações subseqüentes, que podem causar uma bagunça completa.
Questão
Alguém sabe como obter uma lista de todas as operações que o Windows armazenou em seu buffer de Desfazer? Eu vi programas que podem se conectar ao Windows e fazer coisas que não são suportadas, como reorganizar os ícones da barra de tarefas e da bandeja (o XP não suportava isso), então espero que alguém tenha conseguido fazer o mesmo com o buffer Undo.
fonte
taskbar shuffle
Respostas:
Felizmente, eu recebo corretamente o que você está procurando. Nesse caso, parece haver o método WinAPI - ReadDirectoryChangesW que pode fazer o que você espera.
Não tenho certeza se a abordagem a seguir funcionará com o histórico de operações do arquivo ou apenas exibirá as alterações feitas após o tempo em que for usada, no entanto, como essa abordagem não é tão diferente e pode ser usada no cenário Você forneceu, mencionarei que até mesmo ser um pouco fora do tópico:
Você pode conectar o objeto FileSystemWatcher a uma pasta (ainda que o tópico do link seja diferente, este IMHO fornece uma boa visão geral do objetivo da classe) - é a classe C # .NET, eu sei, mas o que é C # pode ser transformado em PowerShell como mostrado por esse script do Script Center da Microsoft.
Você pode considerar soluções de terceiros, como o rastreador do Windows Explorer, que parecem fazer o mesmo (acredito que elas preferem usar chamadas de API (documentadas)) do que técnicas de engenharia reversa - mas você parecia um pouco preocupado com elas, então procurei apenas uma )
E por último, mas não menos importante, você pode até considerar escrever um aplicativo WPF simples baseado no FileSystemWatcher ou aplicativo WPF um pouco mais complexo que chama o método ReadDirectoryChangesW .
fonte