Aby wyjaśnić: Pytanie brzmi naprawdę: Jak zlokalizować klienta wiersza polecenia Mercurial. Jeśli odpowiedź dotyczy dowolnego pliku wykonywalnego, tym lepiej, ale naprawdę interesuje mnie plik wykonywalny hg.exe
.Jak znaleźć pełną ścieżkę do pliku wykonywalnego Mercurial, gdy system Windows jest w stanie go zlokalizować?
Jeśli znam nazwę pliku wykonywalnego, na przykład hg.exe
, klienta wiersza polecenia Mercurial i systemu Windows wie, gdzie to jest, ponieważ mogę wykonać tylko hg log
z wiersza polecenia i wykonuje, jakie kroki są zaangażowane w celu dla mnie znaleźć ten plik wykonywalny w taki sam sposób, w jaki robi to wiersz polecenia i system Windows?
Zasadniczo, jeśli system Windows jest w stanie go zlokalizować, chcę, aby mój program mógł go zlokalizować.
Czy istnieje funkcja WinAPI lub podobna? Kod będzie działał w .NET, napisanym w C#, więc jeśli jest coś wbudowanego w .NET, to byłoby to preferowane rozwiązanie, ale poza tym nie mam nic przeciwko używaniu P/Invoke do tego.
Widziałem jeden potencjalny duplikat tego pytania: c# Check if an executable exists in the windows path, ale czy wszystko w nim jest? Po prostu powtórzenie zawartości zmiennej środowiskowej PATH
i przejrzenie w każdym z tych katalogów pliku wykonywalnego?
Mam niejasne wyobrażenie, że jest to tylko jeden z kroków i prawdopodobnie istnieją nadpisania rejestru, z których Windows może korzystać, o których powinienem wiedzieć, więc opublikuję tutaj pytanie.
Jeśli, z drugiej strony, rzeczywiście istnieje tutaj tylko zmienna PATH, prawdopodobnie można ją bezpiecznie zamknąć jako duplikat.
Ok, to jest to, co zrobię. Kod i tak nie jest ustawiony w kamieniu, więc jeśli dowiem się więcej później, zawsze mogę to zmienić. Metoda PATH działa teraz dobrze na komputerach, na których ją testowałem, więc na razie będę to robiła. Dzięki. –
Niezupełnie. "Rejestracja" (lub raczej klucz rejestru Ścieżki aplikacji) jest używana tylko podczas uruchamiania procesu za pomocą powłoki ShellExecute (zgodnie z metodą "Uruchom ..."), ale nie przez proces CreateProcess (jak zostało to wykonane przez procesor poleceń) –
@BillyOneal good punkt, ale miałem zamiar opublikować adres URL z grupy hg o tym, jak to jest zależne od% PATH%. – jcolebrand