.net - 是否有用于验证安装了哪个版本的 .NET 的命令行命令

标签 .net windows batch-file cmd

我有一组用于执行脚本安装的脚本。您可以在任何 server 2008 机器上使用这些脚本。但是,我需要使用 dos 批处理文件检查是否已安装 .NET 3.5(在脚本运行之前)。那可能吗?

我知道我可以检查 C:\WINDOWS\Microsoft.NET\Framework\v3.5 中的文件是否存在,但如果有一些更可靠的东西会更好。

我想检查它是否真的安装了,而不仅仅是目录/文件是否存在。

谢谢

最佳答案

既然你说你想知道它是否真的安装了,我认为最好的方法(除了运行特定版本的代码),就是检查名为“Install”的注册表项。 0x1 表示是:

C:\>reg query "HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5"| findstr Install

   Install     REG_DWORD       0x1
   InstallPath REG_SZ  c:\WINNT\Microsoft.NET\Framework\v3.5\

这也正好是“微软推荐”official method .

WMI 是另一种可能性,但似乎不切实际(慢?在我的 C2D、SSD 上需要 2 分钟)。也许它在您的服务器上运行得更好:

C:\>wmic product where "Name like 'Microsoft .Net%'" get Name, Version

Name                                                Version
Microsoft .NET Compact Framework 1.0 SP3 Developer  1.0.4292
Microsoft .NET Framework 3.0 Service Pack 2         3.2.30729
Microsoft .NET Framework 3.5 SP1                    3.5.30729
Microsoft .NET Compact Framework 2.0                2.0.5238
Microsoft .NET Framework 4 Client Profile           4.0.30319
Microsoft .NET Framework 4 Multi-Targeting Pack     4.0.30319
Microsoft .NET Framework 2.0 Service Pack 2         2.2.30729
Microsoft .NET Framework 1.1                        1.1.4322
Microsoft .NET Framework 4 Extended                 4.0.30319

C:\>wmic product where "name like 'Microsoft .N%' and version='3.5.30729'" get name

Name  
Microsoft .NET Framework 3.5 SP1

除此之外,我认为唯一可以 100% 确定的方法是实际运行一个针对您的框架版本编译的简单控制台应用程序。就个人而言,我认为这是不必要的,并且相信注册表方法很好。

最后,您可以设置一个可从您的服务器访问的 Intranet 测试站点,并嗅探用户代理以确定 .NET 版本。但这当然不是批处理文件解决方案。另见 doc here .

关于.net - 是否有用于验证安装了哪个版本的 .NET 的命令行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/492967/

相关文章:

batch-file - DOS FOR 循环中可以有多个 EOL 字符吗?

c++ - 在 Windows XP、Vista、7 和 8 中使用旧操作系统的兼容性功能有什么效果?

java - 使用 java 通过 TransportWithMessageCredentials (UserName) 访问 WCF 服务

c# - 好的类(class)名称的想法

windows - 是否可以使用 perl 处理退出代码 > 255?

启动时出现 C++ 服务错误 : Could not Start the Service on Local Computer

windows - 如何从另一个 Windows 批处理脚本调用一个 Windows 批处理脚本,并在两者中都启用延迟扩展

c# - 使用 linq 将共享点列表数据绑定(bind)到下拉列表

c# - 找不到 sendNotifications 选项 Google Calendar api v3 .NET

windows - 添加特定于应用程序的路径,因此它可以从 Windows 中的命令行运行