Visualizando o histórico completo de Desfazer do Windows Explorer

16

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.

Synetech
fonte
xp faz suporte reorganizar as posições de programa da barra de tarefas - por meio de um utilitário de terceiros chamadotaskbar shuffle
Costin Guşă
1
@ CostinGușă, na verdade, havia vários programas que permitem reorganizar os ícones da barra de tarefas e da bandeja, mas, como você disse, eles eram de terceiros . Isso ocorre porque o Windows não suportava a ação (a Microsoft fez suposições sobre o comportamento do usuário), então eles tiveram que fazer engenharia reversa das funções para descobrir uma maneira de fazê-lo, porque não havia ganchos oficiais para permitir que isso acontecesse (eu mesmo uma vez teve que fazer engenharia reversa da entrada do registro que controla o comportamento da exibição do ícone da bandeja para gravar um visualizador / editor para ela.
Synetech
No Windows 10, a barra de status não exibe nada ao destacar Desfazer / Refazer no menu do botão direito da pasta. Irritantemente, a fita não possui botões para isso. A solução é que você deve adicionar os botões Desfazer / Refazer à Barra de Ferramentas de Acesso Rápido (a minúscula barra de ferramentas na barra de título) e apontar para cada um dos botões para exibir os detalhes de sua operação. (Obviamente, você ainda não pode ver os caminhos ou o histórico completo.) PS: Algumas operações como refazer uma exclusão parecem limpar o histórico inteiro, portanto, tenha cuidado com isso.
ADTC 25/09/19

Respostas:

6

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 .

Matt Stuvysant
fonte
Esta poderia, muito bem, ser uma das respostas mais abrangentes - sempre - no superuser.com/ Obrigado, pelos links e pelo seu esforço IMPRESSIONANTE, muito bom! .. Obrigado !! :))
Nostromov