我想使用ServiceController类访问我“控制”的服务的程序集版本信息。 (即我想显示“2.3.1.23”),但我找不到任何有关检索装配版本的信息......是否可以使用?
编辑:只是为了澄清......我只知道本地计算机上运行的服务的名称。我想访问该服务的“FileVersionInfo”(更好的说服务exe),但我不知道服务exe位于何处。
答案 0 :(得分:11)
如果我理解正确,您希望获得任何服务exe的版本。假设您知道服务可执行文件的名称和路径,您可能想尝试:
FileVersionInfo versionInfo = FileVersionInfo.GetVersionInfo(<path and name of service exe>);
然后,您可以使用FileVersionInfo
类的属性来显示版本号。请注意,只要您具有读取文件的权限,这也适用于UNC路径。
修改强>
要获取可执行路径和名称(如果您只知道服务名称),可以访问HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
下的注册表。搜索与服务名称匹配的密钥。在该键下,有一个值名ImagePath
,其中包含可执行文件的名称和路径。
答案 1 :(得分:3)
试试这个:
System.Reflection.Assembly.GetAssembly(typeof(ServiceController)).GetName().Version
答案 2 :(得分:1)
Assembly runningAssembly = Assembly.GetEntryAssembly();
if (runningAssembly == null)
{
runningAssembly = Assembly.GetExecutingAssembly();
}
runningAssembly.GetName().Version;
在您的服务中使用此代码。