我有一个 C# 应用程序,其中包含一些运行 JMP 自动化的函数。 当用户启动 C# 应用程序时,它会进行检查以确保 JMP 已安装在用户的系统上。我已就如何了解系统上是否安装了 JMP 的问题联系了 JMP 技术支持。解决方案是寻找注册表项。
在 C# 代码中,我有一个 bool 来检查 JMP 是否已安装:
bool jmpExists = Registry.ClassesRoot.OpenSubKey("TypeLib\\{DCD36DE0-78F8-11CF-9E68-0020AF24E9FE}\\1.0\\0\\win32", false) != null;
到目前为止,至少有 2 台电脑(安装了 Windows 10 和 JMP 13)没有此注册表项,而 10 台电脑有此注册表项。
在一台缺少注册表项的 PC 上,我尝试运行 JMP 自动化(忽略缺少的注册表项),但它无法在此 PC 上启动。 接下来,我卸载了 JMP 13,然后重新安装了 JMP 13,之后注册表项就出现了,JMP 自动化工作正常。
这是创建 JMP/自动化实例的 C# 代码
使用 System.Runtime.InteropServices;
JMP.Application myJMP = new JMP.Application();
但很多可能使用我的软件的用户对JMP有很多定制,卸载并重新安装JMP的想法是非常不可取的! (否则他们的 JMP 工作得很好)
知道为什么某些人的计算机上缺少此注册表项吗? (运行 JMP 13 的 Windows 7 PC)
除了重新安装 JMP 之外,还有其他方法可以解决此问题吗?我不确定这是否只是将注册表项复制到没有注册表项的计算机上的简单问题? 不完全确定如何复制和安装注册表项(如果这是解决方案)。
如果 32 位 JMP 安装在 64 位版本上,它们的密钥可能会出现在 Wow 配置单元中。因此,有问题的密钥位于:
HKEY_CLASSES_ROOT\WOW6432Node\TypeLib\{DCD36DE0-78F8-11CF-9E68-0020AF24E9FE}\1.0\0\win32
布赖恩·科科伦
JMP开发
重置文件关联应该重置该注册表项。
文件 > 首选项 > Windows 特定
如果由于某种原因这不起作用,您可以在 Regedit 中自行创建注册表项。
请注意,您的 jmpExists 变量实际上意味着“JMP 已安装并且 JMP 可以自动化”。