#c# #.net #windows
#c# #.net #Windows
Вопрос:
Я хотел бы сделать что-то вроде этого:
FileVersionInfo myFileVersionInfo = FileVersionInfo.GetVersionInfo(SomeFile.exe);
… Но я не знаю полного пути к файлу SomeFile.exe . Я знаю, что он будет находиться в ПУТИ Windows или в текущем каталоге, из которого выполняется мой код, но возможно, что может быть более одной копии SomeFile.exe в системе. Если я использую класс процесса для запуска SomeFile.exe , я могу просто сделать это:
Process.StartInfo.FileName = SomeFile.exe;
Process.Start();
Мне нужен способ получить FileVersionInfo того же SomeFile.exe это было бы запущено вместе с Процессом.Запустите () без необходимости ручного поиска по расположениям ПУТИ Windows и текущему каталогу. Хотя можно было бы выполнить ручной поиск, это не решает проблему информирования меня о том, какой SomeFile.exe Windows выберет выполнение, если в процессе не указан путь к файлу.StartInfo.FileName Важно, чтобы я не получал FileVersionInfo другого SomeFile.exe .
Комментарии:
1. Один из верных способов сделать это —
CreateProcess
CREATE_SUSPENDED
затем использоватьHPROCESS
для получения информации о пути и версии. Однако в C # это не совсем просто.2.
Path.GetFullPath
?3. @dxiv спасибо за предложение… Я рассмотрю возможность его приостановки, но, возможно, я даже смогу просто создать его без приостановки и использовать Process. MainModule. Имя файла, а затем уничтожить его. Это довольно запутанно, но может быть достаточно хорошо для моих нужд здесь, хотя все еще открыт для других идей, если кто-нибудь еще прочитает это. Надеялся на более элегантный / эффективный метод.