如何使用Api检测系统是否安装.net Freamwork及当前的版本

2025-03-27 11:37:59
推荐回答(4个)
回答1:

这种问题建议到bbs.csdn.net去问

根据Applied Microsoft .NET Framework Programming上的说法,是检查
%windir%\system32\MSCorEE.dll是否存在

以下摘自微软中国社区网站 《把.NET程序部署到没有安装.NET Framwork的机器上》 作者 张广辉

原文见 http://www.microsoft.com/china/community/article.asp?oBODY=TechZone/TechArticle/TechDoc/deployNETApp&oXSLT=TechZone/TechArticle/TechContent

如果我们要把自己的.NET程序发布到目标机器上,同时我们不确定该目标机器是否已经安装了.NET Framework, 那我们就需要自己设计一段unmanaged代码,来判断目标机器是否安装了.NET Framework, 如果没有,则运行Dotnetfx.exe安装.NET Framework, 然后利用Windows Installer安装自己的程序。

在MSDN的下面网页上,我们可以获得一个使用unmanaged C++实现的安装程序和它的源代码:

http://msdn.microsoft.com/downloads/default.asp?URL=/code/sample.asp?url=/msdn-files/027/001/830/msdncompositedoc.xml

1. 在CSettings class中,通过读取"settings.ini",获得您自己的MSI安装文件和dotnetfx.exe的路径,以及其他您自己的设置。(比如.NET Framework的语言版本)

GetCaptionText(void)

GetDialogText(void)

GetErrorCaptionText(void)

GetIniName(void)

GetProductName(void)

Parse()函数用来解析settings.ini文件。

2. 在Main.cpp文件中,全局函数FxInstallRequired()判断是否要在目标机器上安装.NET Framework. FxInstallRequired()会检测下面的注册表键值和dotnetfx.exe的版本和语言设置。

HKLM\SOFTWARE\Microsoft\.NETFramework\policy\v1.0

3.如果需要安装.NET Framework, 在全局函数ExecCmd()中调用下面的命令silent安装dotnetfx.exe:

dotnetfx.exe /q:a /c:"install /l /q"

4。 在ExecCmd()全局函数中调用下面的命令安装您自己的MSI文件:

msiexec /i REBOOT=ReallySuppress

回答2:

根本就不能实现,要是没有安装.net运行库的话,你的程序就根本运行不了,建议你用别的语言(如c++)做个起动器,就是把自己的c#程序做成模块

A

回答3:

foreach(string file in Directory.GetDirectories(Environment.GetEnvironmentVariable("windir")+"\\Microsoft.NET\\Framework"))

然后判断v1.1.4322等等

回答4:

可以利用脚本或者是调用WindowsAPI