ATUALIZAÇÃO Encontrou um método bruto e deselegante, mas funciona!
Salve isso como paint.bat
em algum lugar no PATH, onde será encontrado por todos os usuários, como C: \ Windows:
@start /b "Paint" "c:\Program Files\Paint.NET\PaintDotNet.exe" %2
Salve isso replace_mspaint_with_paintdotnet.reg
e mescle-o ao registro clicando duas vezes nele com o Windows Explorer (requer privilégios de administrador):
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\mspaint.exe]
"Debugger"="paint.bat"
Agora, usando o menu de contexto Editar em qualquer um dos tipos de arquivo de imagem comuns, o PaintDotNet usará o Microsoft Paint.
Pare de ler agora, a menos que você seja do tipo que gosta de detalhes sombrios.
Entre os utilitários listados nas respostas de @ Psycogeek, cheguei frustrantemente perto de uma solução completa, mas não o suficiente. Estou postando o remédio parcial aqui, caso outra pessoa possa fornecer a peça que falta.
A guia autoruns
Image Hijacks mostra programas que fingem ser equivalentes ao MS; exemplos populares desse método são o Notepad2 substituindo o Notepad e o Process Explorer substituindo o Gerenciador de tarefas.
Clicar duas vezes em um dos seqüestradores, notepad2, por exemplo, abre a entrada relevante no Regedit. Exportei essa chave para o disco e alterei as entradas do bloco de notas para entradas da rede paindotnet.
Mesclei o arquivo .reg alterado, executei as Autoruns automaticamente e, com certeza, a nova entrada mspaint está lá.
Neste ponto, qualquer chamada que costumava ir para o mspaint agora é redirecionada para o PaintDotNet.exe, sim! por exemplo:
- Iniciar> Executar> mspaint
mspaint
em um shell de comando
- Selecione um foobar.jpg no Windows Explorer e use o menu Editar contexto
C:\Windows\system32\mspaint.exe
de qualquer lugar
Infelizmente, em cada chamada, o Paintdotnet diz: O tipo de imagem não é reconhecido e não pode ser aberto. :( :(
Alguns testes no shell da linha de comando revelam que eu recebo o mesmo erro passando aspas vazias para o PdN.
C:\> "C:\Program Files\Paint.NET\PaintDotNet.exe" " "
Então, acho que, por algum motivo, o caminho do arquivo de destino está ficando distorcido antes que o PdN o veja. Não consegui descobrir como ver o que o PdN está realmente recebendo e, portanto, talvez inventar o remédio final.
Aqui está replace_mspaint_with_paintdotnet.reg
, que substitui o mspaint.exe pelo PdN e replica o erro acima:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\mspaint.exe]
"Debugger"="\"C:\\Program Files\\Paint.NET\\PaintDotNet.exe\""
Use esta depuração paint.bat
para capturar a linha de comando usada para iniciar o arquivo em lote em %TEMP%
:
@echo %* > "%temp%\%~nx0.txt"
@start /b "Paint" "c:\Program Files\Paint.NET\PaintDotNet.exe" %2
A adição de uma linha como notepad %*
revela que o erro de imagem não reconhecida ocorre porque no primeiro método o PdN está tentando carregar o c: \ windows \ system32 \ mspaint.exe real como uma imagem e nunca vê outros parâmetros. Por razões que eu não entendo, o uso em %2
vez do habitual %1
no arquivo em lotes funciona, mas não quando o PdN é chamado diretamente.
Ufa! Essa foi difícil. Soluções que não contenham clareza que ignoram a necessidade de um arquivo em lotes serão amplamente apreciadas. :)