这种问题建议到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
根本就不能实现,要是没有安装.net运行库的话,你的程序就根本运行不了,建议你用别的语言(如c++)做个起动器,就是把自己的c#程序做成模块
A
foreach(string file in Directory.GetDirectories(Environment.GetEnvironmentVariable("windir")+"\\Microsoft.NET\\Framework"))
然后判断v1.1.4322等等
可以利用脚本或者是调用WindowsAPI