Nazwa pliku bez rozszerzenia jako zmienna klucza rejestru (Windows 7)

0

Mam następujący problem w systemie Windows 7. Próbuję utworzyć menu kontekstowe dla plików kliknięcia prawym przyciskiem określonego typu, powiedzmy *.hyb, tj. chcę, gdy klikam prawym przyciskiem myszy na tego rodzaju pliki (np filename.hyb ), opcja w menu, np. „Uruchom z Myapplication”, a gdy ją kliknę, chcę, aby polecenie „Nazwa pliku Myapplication.exe” zostało uruchomione.

Udało mi się utworzyć menu kontekstowe dla tego konkretnego pliku, ale problem polega na tym, że nazwa pliku jest przekazywana jako argument do Myapplication.exe z jego rozszerzeniem. Myapplication.exe nie obsługuje rozszerzeń plików, więc muszę go usunąć. Mój klucz rejestru (przechowywany pod HKEY_CURRENT_USER\Software\Classes\hyb_auto_file\shell\Myapplication\command ) ma wartość C:\SomeFolder\Myapplication.exe %1

Czy mogę poprawić %1 parametr, aby nazwa pliku została przekazana bez jej rozszerzenia?

Dziękuję Ci bardzo!

Christos Liontas
źródło
Zmień Myapplication.exe, aby działał z pełnymi nazwami plików (z rozszerzeniem).
Werner Henze
@ Werner Henze: Chciałbym, ale chcę być kompatybilny wstecz ze starszymi wersjami Myapplication, których nie wolno mi zmieniać.
Christos Liontas
Nie ma szans na obsługę obu formatów: pliki z rozszerzeniem i bez rozszerzenia? Może przez podanie dodatkowego parametru, takiego jak „/ withext”? Wydaje mi się to trochę czystsze niż (działające) obejście z wywołaniem cmd (które przyszło mi do głowy, ale było dla mnie zbyt brudne).
Werner Henze
@ Werner Henze: Problem polega na tym, że starsza (nietykalna) wersja programu nie może pracować z rozszerzeniami, nie z nowszymi.
Christos Liontas

Odpowiedzi:

0

Nie działa napisanie „% ~ dpn1” w rejestrze.

Możesz zadzwonić CMD plik poleceń, który odcina rozszerzenie i wywołuje aplikację:

Zawartość pliku hyb.cmd:

echo on

myApp.exe "%~dpn1"

„% ~ dpn1” zajmie dysk + ścieżka + nazwa parametru 1 i pominie rozszerzenie.

Plik definicji rejestru hyb.reg nazwać ten skrypt:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.hyb]

[HKEY_CLASSES_ROOT\.hyb\shell]

[HKEY_CLASSES_ROOT\.hyb\shell\open hyb file]

[HKEY_CLASSES_ROOT\.hyb\shell\open hyb file\command]
@="cmd.exe /c hyb.cmd \"%1\""

Zauważ, że Windows udostępnia przydatne polecenia do utrzymywania skojarzeń plików z linii poleceń bez dotykania rejestru. Zapytać Google dla ASSOC i FTYPE.

Axel Kemper
źródło
Bardzo dziękuję za odpowiedź! Zadziałało, chociaż musiałem użyć prostszego klucza „C: ścieżka” hcm.cmd „% 1”. Nie wiem, dlaczego twój klucz nie zadziałał, otrzymałem komunikat, że system Windows nie może znaleźć ścieżki lub że nie mam wystarczających uprawnień do wykonania operacji. W każdym razie jestem bardzo wdzięczny! -Christos
Christos Liontas
Mój parametr rejestru zakłada, że ​​plik skryptu hyb.cmd jest w wyszukiwaniu PATH. Jeśli wyraźnie dodasz pełną ścieżkę, jesteś bezpieczny.
Axel Kemper