Recupero programmatico della versione di un servizio in esecuzione

Vorrei accedere alle informazioni sulla versione dell’assemblaggio di un servizio che “controllo” con la class ServiceController. (cioè mi piacerebbe visualizzare “2.3.1.23”), tuttavia non riesco a trovare alcuna informazione sul recupero delle versioni di assieme … È ansible a tutti?

EDIT : Giusto per chiarire … Conosco solo il nome del servizio in esecuzione sul computer locale. Voglio accedere a “FileVersionInfo” di quel servizio (meglio detto servizio exe), tuttavia non so dove si trova quel servizio.

Se ti capisco correttamente, vuoi ottenere la versione di qualsiasi exe di servizio. Supponendo che tu conosca il nome e il percorso dell’eseguibile del servizio, potresti provare a:

FileVersionInfo versionInfo = FileVersionInfo.GetVersionInfo(); 

È quindi ansible utilizzare le proprietà della class FileVersionInfo per mostrare il numero di versione. Si noti che questo funziona anche per i percorsi UNC se si dispone delle autorizzazioni per accedere in lettura al file.

MODIFICARE
Per ottenere il percorso e il nome dell’eseguibile se si conosce solo il nome del servizio, è ansible accedere al registro in HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services . Cerca una chiave che corrisponde al nome del servizio. Sotto quella chiave, c’è un nome di valore ImagePath che contiene il nome e il percorso dell’eseguibile.

Prova questo:

 System.Reflection.Assembly.GetAssembly(typeof(ServiceController)).GetName().Version 
  Assembly runningAssembly = Assembly.GetEntryAssembly(); if (runningAssembly == null) { runningAssembly = Assembly.GetExecutingAssembly(); } runningAssembly.GetName().Version; 

Usa questo codice all’interno del tuo servizio.