【发布时间】:2017-03-11 01:57:43
【问题描述】:
我想检测 Solidworks 的安装以了解版本和 Service Pack(如果应用)。 我找到了一个注册表键“安装源”HKML / SOLIDWORK/Setup”,但有些计算机的这个键是空的 还有其他方法可以获取这些信息吗?
谢谢
【问题讨论】:
标签: solidworks
我想检测 Solidworks 的安装以了解版本和 Service Pack(如果应用)。 我找到了一个注册表键“安装源”HKML / SOLIDWORK/Setup”,但有些计算机的这个键是空的 还有其他方法可以获取这些信息吗?
谢谢
【问题讨论】:
标签: solidworks
您尚未指定语言,因此我无法为您提供确切的语法,但使用 SOLIDWORKS API,您可以获取 ISldWorks 对象的 RevisionNumber 方法。根据文档:
对于在 SOLIDWORKS 首次公开发布之前的所有 SOLIDWORKS 可执行文件 SOLIDWORKS 2000,此方法返回 1.0.0。对于初始公众 SOLIDWORKS 2000 版本,此方法返回 8.0.0。对于 SOLIDWORKS 2000 SP1,此方法返回 8.1.0,以及每个后续服务包 SOLIDWORKS 2000 的最左边小数部分递增 返回值。每个连续的主要公开版本都会增加 返回值的小数点左侧的部分和 每个初始公开版本的十进制值为 0.0。为了 例如,SOLIDWORKS 2005 的初始公开版本返回 13.0.0 而 SOLIDWORKS 2005 SP0.1 返回 13.0.1 和 SOLIDWORKS 2005 SP1 返回 13.1.0。
Alpha、Beta 和预发布版本返回负面的次要修订 数字:
a1: -1.0
b1:-2.0
b2:-3.0
b3:-4.0
PR1:-5.0(此值可能会更高或更低,具体取决于 beta 版本的数量。)
例如,SOLIDWORKS 2015 beta2 的返回值为 23.-3.0.b1:
【讨论】:
这就是你要找的吗?
using SolidWorks.Interop.sldworks;
using System;
namespace Sample
{
class Program
{
const string appString = "SldWorks.Application";
static void Main(string[] args)
{
SldWorks swApp = null;
try
{
swApp = (SldWorks)System.Runtime.InteropServices.Marshal.GetActiveObject(appString);
if (swApp == null) throw new NullReferenceException(nameof(swApp));
}
catch (Exception)
{
try
{
swApp = (SldWorks)Activator.CreateInstance(Type.GetTypeFromProgID(appString));
if (swApp == null) throw new NullReferenceException(nameof(swApp));
}
catch (Exception)
{
Console.WriteLine("Could not get SolidWorks Version");
}
}
if (swApp != null) Console.WriteLine("SolidWorks Version: {0}", swApp.RevisionNumber());
Console.ReadLine();
}
}
}
【讨论】: