2015-12-17 2 views
3

Мне нужно получить информацию о продукте процесса.
В качестве примера я должен знать, относится ли процесс WINWORD к Office 2010 или Office 2013. Другой пример - с программным обеспечением adobe creative suite.
Как правило, для процесса, имя которого может быть одинаковым для разных наборов, как узнать версию пакета.Как найти, к какому продукту принадлежит процесс?

В службе у меня есть список имен процессов, полученных с сервера. Я отслеживаю, как долго пользователь использует этот процесс и отправляет эту информацию обратно на сервер. Поскольку служба будет установлена ​​на нескольких компьютерах, набор Office, набор Adobe или любой другой продукт могут быть разными, но процесс, вероятно, будет одинаковым в каждом пакете.
В настоящее время на сервере у меня нет способа определить, к какой версии принадлежит процесс. Это требование, чтобы иметь возможность показать, как долго, например, Microsoft Word 2010 был использован, и поэтому для каждой версии

Надеюсь, что я проясняю.


Благодарности @Niels за ваш вклад, который должен получить процесс MajorPart от его FileVersionInfo.
Мы можем отправить эту информацию в качестве дополнения. Несомненно, это упрощает идентификацию таких апартаментов, как Office, где все основные версии продуктов одинаковы, butt ...
С номером adobe вы показали мне, что в пакете adobe большинство продуктов будет иметь другого мэра версии, и это то, чего мы боимся с проверкой процесса FileVersionInfo. Чтобы настроить на сервере способ привязки основной версии каждого продукта к набору только для Adobe, означает, что такая вещь должна выполняться для каждого программного обеспечения в той же или подобной ситуации.

ответ

3

Вы можете посмотреть в свойствах файла, а также подвергаются Проводником:

Word 2013 versioning

Чтобы получить эти данные в .NET вы инспектировать FileVersionInfo экземпляр, возвращаемый FileVersionInfo.GetVersionInfo. Образцы предоставляются на обеих страницах справки, но проще будет для вашего случая, как вы заинтересованы только в основных номеров версий:

// Get the file version for the notepad. 
    FileVersionInfo myFileVersionInfo = 
     FileVersionInfo.GetVersionInfo(Environment.SystemDirectory + "\\Notepad.exe"); 

    // Print the product major part number. 
    textBox1.Text = "Product major part number: " + myFileVersionInfo.ProductMajorPart; 

номера сборки сами хорошо документированы хорошие программные комплексы like MS Office.

+0

Мы рассматривали возможность получения информации из 'Process.MainModule', вы можете получить« FileName »(полный путь) и« FileVersionInfo »прямо оттуда. – Jedabero

+0

Но я не был на 100% уверен, что это может быть одинаково для других наборов, таких как CS Adobe или AutoCAD. Но, возможно, просто использование большого номера детали может работать, для исполняемых файлов кажется разумным иметь эту уникальную для каждой версии. – Jedabero

+0

[Это соглашение] (http://semver.org/);) Не то, чтобы Microsoft придерживалась семантического управления версиями, но базовые принципы универсальны, что номер версии * major * указывает на серьезный полом. И что основной и младший вместе всегда указывают «отправленную версию» продукта. Для Adobe доступны [похожие списки] (https://community.spiceworks.com/how_to/46395-adobe-cs-and-cc-version-number-translation). –

Смежные вопросы