编程检索正在运行的服务的程序集的版本(Programmatically retrieving ass

2019-08-03 05:25发布

我想对服务的访问I“控制”与ServiceController的类的程序集的版本信息。 (即我想显示“2.3.1.23”),但是我无法找到有关检索集版本...是否有可能在所有的信息吗?

编辑 :只是为了澄清...我只知道在本地计算机上运行的服务的名称。 我想访问该服务的“FileVersionInfo”(还好说服务exe文件),但我不知道是该服务的exe文件所在的位置。

Answer 1:

如果我理解正确的话,你想获得任何服务exe文件的版本。 假设你知道的名称和服务的可执行文件的路径,你可能会想尝试:

FileVersionInfo versionInfo = FileVersionInfo.GetVersionInfo(<path and name of service exe>);

然后,您可以使用的特性FileVersionInfo类显示的版本号。 请注意,这也适用于UNC路径,只要你有阅读权限访问该文件。

编辑
要获取可执行文件的路径和名称,如果你只知道服务的名称,你可以访问下的注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 。 搜索相匹配的服务名称的关键。 在那把钥匙,有一个值名称ImagePath包含可执行文件的名称和路径。



Answer 2:

试试这个:

System.Reflection.Assembly.GetAssembly(typeof(ServiceController)).GetName().Version


Answer 3:

 Assembly runningAssembly = Assembly.GetEntryAssembly();
 if (runningAssembly == null)
 {
    runningAssembly = Assembly.GetExecutingAssembly();
 }
runningAssembly.GetName().Version;

使用此代码,你的服务里面。



文章来源: Programmatically retrieving assembly version of a running service