AKTUALIZACJA Znalazłem prostą i nieelegacyjną metodę, ale działa!
Zapisz to jako paint.bat
gdzieś w ŚCIEŻCE, gdzie znajdą ją wszyscy użytkownicy, na przykład C: \ Windows:
@start /b "Paint" "c:\Program Files\Paint.NET\PaintDotNet.exe" %2
Zapisz to jako replace_mspaint_with_paintdotnet.reg
i połącz z rejestrem, klikając go dwukrotnie w Eksploratorze Windows (wymaga uprawnień administratora):
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\mspaint.exe]
"Debugger"="paint.bat"
Teraz za pomocą menu kontekstowego Edycja na dowolnym typowym typie pliku obrazu zostanie użyty PaintDotNet zamiast MS Paint.
Przestań czytać teraz, chyba że lubisz szorstkie szczegóły.
Pomiędzy narzędziami wymienionymi w obu odpowiedziach @ Psycogeek zbliżyłem się frustrująco do kompletnego rozwiązania, ale nie wystarczająco blisko. Zamieszczam tutaj częściowe rozwiązanie na wypadek, gdyby ktoś inny mógł dostarczyć brakujący element.
Karta autoruns
Przejmowanie obrazów pokazuje programy udające swoje odpowiedniki w MS, popularne przykłady z wykorzystaniem tej metody to Notepad2 zastępujący Notatnik i Process Explorer zastępujący Menedżera zadań.
Kliknięcie 2x jednego z porwań, jak mówi notepad2, otwiera odpowiedni wpis w Regedit. Wyeksportowałem ten klucz na dysk, a następnie zmieniłem wpisy notatnika na wpisy paindotnet.
Połączyłem zmieniony plik .reg, odświeżyłem Autoruns i na pewno jest tam nowy wpis mspaint.
W tym momencie każde wywołanie, które kiedyś przechodziło do mspaint, jest teraz przekierowywane do PaintDotNet.exe, tak! na przykład:
- Start> Uruchom> mspaint
mspaint
w powłoce poleceń
- Wybierz plik foobar.jpg w Eksploratorze Windows i użyj menu kontekstowego Edytuj
C:\Windows\system32\mspaint.exe
skądkolwiek
Niestety przy każdym wywołaniu Paintdotnet mówi: Typ obrazu nie jest rozpoznawany i nie można go otworzyć. :( :(
Niektóre testy w powłoce wiersza poleceń ujawniają, że otrzymuję ten sam błąd, przekazując puste cudzysłowy do PdN.
C:\> "C:\Program Files\Paint.NET\PaintDotNet.exe" " "
Myślę więc, że z jakiegoś powodu ścieżka pliku docelowego ulega zniekształceniu, zanim PdN go zobaczy. Nie byłem w stanie dowiedzieć się, jak sprawdzić, co faktycznie dostaje PdN, i dlatego być może opracowałem ostateczne rozwiązanie.
Oto replace_mspaint_with_paintdotnet.reg
, który zamienia mspaint.exe na PdN i replikuje błąd powyżej:
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\""
Użyj tego debugowania, paint.bat
aby przechwycić wiersz poleceń użyty do uruchomienia pliku wsadowego w %TEMP%
:
@echo %* > "%temp%\%~nx0.txt"
@start /b "Paint" "c:\Program Files\Paint.NET\PaintDotNet.exe" %2
Dodanie linii podobnej notepad %*
ujawnia, że błąd nie został rozpoznany przez obraz, ponieważ w pierwszej metodzie PdN próbuje załadować rzeczywisty plik c: \ windows \ system32 \ mspaint.exe jako obraz i nigdy nie widzi żadnych innych parametrów. Z powodów, których nie rozumiem, użycie %2
zamiast zwykłego %1
w pliku wsadowym działa, ale nie w przypadku bezpośredniego wywołania PdN.
Uff! To było trudne. Docenione zostaną rozwiązania niekłopotliwe, które omijają potrzebę pliku wsadowego. :)