Znalezienie ścieżki do pliku .exe

0

Witam,

W jednym ze swoich projektów potrzebuję napisać funkcję, która znajdzie pełną ścieżkę do określonego pliku .exe, lub katalogu, w którym ten plik .exe się znajduje. Znam jedynie nazwę pliku i katalogu. W tym konkretnym przypadku muszę pobrać do zmiennej ścieżkę katalogu Wireshark, w którym znajduje się plik tshark.exe, ale poprzednie elementy ścieżki nie są znane. Każdy z użytkowników może zainstalować Wiresharka w innej lokalizacji. Aplikacja będzie działała na różnych komputerach, przez co nie mogę sobie pozwolić na zdefiniowanie domyślnej ścieżki. Aktualnie aplikacja posiada textboxa do wpisania swojej ścieżki do katalogu Wireshark. Czy da się napisać funkcję, która znajdzie ją automatycznie i nie trzeba będzie jej wpisywać ręcznie? Z góry dzięki za odpowiedzi ;)

0

Ja bym zweryfikował czy Wireshark jest w jakiś przewidywalnych katalogach typu 'Program files', bezpośrednio na C: itd. Jeśli bardzo Ci zależy to możesz sprawdzać po kolei drzewo plików, ale to trochę może potrwać. Możesz też skorzystać z API windowsowego ale wątpię że to zadziała bo to nie indeksuje wszystkich katalogów domyślnie jeśli dobrze pamiętam.
Przykład z tym API: https://stackoverflow.com/que[...]ows-search-service-in-c-sharp

0

Spróbuj odczytać z rejestru czy masz wartość klucza:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Wireshark.exe

Jeśli jest - wireshark jest zainstalowany i pod tym kluczem odczytasz ścieżkę do Wiresharka.
Pytanie czy bez uprawnień admina jest dostęp - nie wiem.
Jak czytać z rejestru znajdziesz w jakiś tutorialach.

Ten sposób nie znajdzie Wiresharka w wersji portable.

2

Z reguły tego typu wykrywanie robi się przez "próbkowanie", tj. masz zestaw reguł dla wspieranych wersji programu X typu domyślne ścieżki, wpisy w rejestrze czy obecność komendy w zmiennej PATH.
Gdy automat nie jest w stanie wykryć programu to pokazujesz OpenFileDialog dla użytkownika i prosisz o wskazanie pliku exe programu.

Ze skrótów i wpisów w Menu Start też sa się wyciągnąć lokalizację pliku EXE.

0

Dziękuje za pomoc i porady. Zdecydowałem się na ustawienie domyślnej ścieżki do katalogu "Program Files", a w razie gdyby lokalizacja była inna zostanie wywołany OpenFileDialog.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0