Để làm rõ: Câu hỏi thực sự là: Làm thế nào để xác định vị trí máy khách dòng lệnh Mercurial. Nếu câu trả lời có thể áp dụng cho bất kỳ tệp thực thi nào, thì càng tốt, nhưng tôi thực sự quan tâm đến tệp thực thi hg.exe
.Làm thế nào để tìm đường dẫn đầy đủ đến Mercurial thực thi, khi Windows có thể định vị nó?
Nếu tôi biết tên của tệp thực thi, hãy nói hg.exe
, ứng dụng dòng lệnh Mercurial và Windows biết vị trí của nó là vì tôi có thể thực hiện hg log
từ dấu nhắc lệnh và thực thi, các bước nào liên quan đến tôi để thấy rằng thực thi bản thân mình, trong cùng một cách mà dấu nhắc lệnh và Windows hiện nó?
Về cơ bản, nếu Windows có thể định vị nó, tôi muốn chương trình của tôi có thể định vị nó.
Có chức năng WinAPI hay tương tự không? Mã sẽ chạy trong .NET, được viết bằng C#, vì vậy nếu có bất kỳ thứ gì được tích hợp vào .NET thì đây sẽ là giải pháp được ưu tiên, nhưng nếu không tôi không có hại khi sử dụng P/Invoke cho việc này.
Tôi đã nhìn thấy một tiềm năng trùng lặp của câu hỏi này: c# Check if an executable exists in the windows path, nhưng đó là tất cả có phải không? Chỉ cần lặp qua nội dung của biến môi trường PATH
và tìm trong mỗi thư mục đó để thực thi?
Tôi có một khái niệm mơ hồ rằng đó chỉ là một trong các bước liên quan và có thể có ghi đè sổ đăng ký mà Windows có thể sử dụng mà tôi cần biết, vì vậy tôi sẽ đăng câu hỏi ở đây.
Nếu, mặt khác, có thực sự chỉ là biến PATH trong chơi ở đây, nó có thể có thể đóng một cách an toàn như là một bản sao.
Ok, thì đó là những gì tôi sẽ làm. Mã không được đặt trong đá anyway, vì vậy nếu tôi tìm hiểu thêm sau này, tôi luôn có thể thay đổi nó. Phương pháp PATH hoạt động tốt ngay bây giờ trên các máy tôi đã thử nghiệm trên, vì vậy tôi sẽ chỉ gắn bó với điều đó trong thời gian này. Cảm ơn. –
Không hoàn toàn. "Đăng ký" (hoặc đúng hơn, khóa đăng ký Đường dẫn ứng dụng) chỉ được sử dụng khi bắt đầu quá trình với ShellExecute (được thực hiện bằng "Chạy ..."), nhưng không phải bởi CreateProcess (được thực hiện bởi bộ xử lý lệnh) –
@BillyOneal good nhưng tôi sắp đăng URL từ nhóm hg về cách nó được bản lề trên% PATH% anyways. – jcolebrand