我想对服务的访问I“控制”与ServiceController的类的程序集的版本信息。 (即我想显示“2.3.1.23”),但是我无法找到有关检索集版本...是否有可能在所有的信息吗?
编辑 :只是为了澄清...我只知道在本地计算机上运行的服务的名称。 我想访问该服务的“FileVersionInfo”(还好说服务exe文件),但我不知道是该服务的exe文件所在的位置。
我想对服务的访问I“控制”与ServiceController的类的程序集的版本信息。 (即我想显示“2.3.1.23”),但是我无法找到有关检索集版本...是否有可能在所有的信息吗?
编辑 :只是为了澄清...我只知道在本地计算机上运行的服务的名称。 我想访问该服务的“FileVersionInfo”(还好说服务exe文件),但我不知道是该服务的exe文件所在的位置。
如果我理解正确的话,你想获得任何服务exe文件的版本。 假设你知道的名称和服务的可执行文件的路径,你可能会想尝试:
FileVersionInfo versionInfo = FileVersionInfo.GetVersionInfo(<path and name of service exe>);
然后,您可以使用的特性FileVersionInfo
类显示的版本号。 请注意,这也适用于UNC路径,只要你有阅读权限访问该文件。
编辑
要获取可执行文件的路径和名称,如果你只知道服务的名称,你可以访问下的注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
。 搜索相匹配的服务名称的关键。 在那把钥匙,有一个值名称ImagePath
包含可执行文件的名称和路径。
试试这个:
System.Reflection.Assembly.GetAssembly(typeof(ServiceController)).GetName().Version
Assembly runningAssembly = Assembly.GetEntryAssembly();
if (runningAssembly == null)
{
runningAssembly = Assembly.GetExecutingAssembly();
}
runningAssembly.GetName().Version;
使用此代码,你的服务里面。