C#和非托管本机C++是否有通用的方法来确定已安装的CLR版本?

Chr*_*ner 3 .net c# c++ clr clr-hosting

正如标题所说:C#中是否有一种通用的方式,特别是非托管的本机C++来确定已安装的CLR版本?这意味着不仅要检查是否根据此知识库文章安装了Framework .我想通过使用CLR接口来完成它,就像这里为CLR1,CLR1.1和CLR2 所做的那样.通过这种方式,我可以确保它们真正安装.但这不适用于CLR4.有任何想法吗?

我的目标是创建一个可用的CLR版本的枚举,如Clrver(无论进程列表功能是否正确).

Mag*_*son 5

"常见方式"与否,但Codeplex的dotNetInstaller在本机非托管C++代码中执行此操作.
它是开源的,看看它们是如何做到的.

此外,您可以使用ICLRMetaHost :: EnumerateInstalledRuntimes方法来检测.NET v4 +和GetRequestedRuntimeInfoInfo(与clrver.cpp非常相似)来检测.NET v1 - v2.所以你必须打两个电话,但这应该涵盖它.