判断注册表:如果存在就认为是已经安装:
\LocalMachine\software\microsoft\.NetFrameWork下面的
InstallRoot(=C:\WINDOWS\Microsoft.NET\Framework\)存放安装目录,不同的版本安装在不同的目录下.Policy\v1.0\有版本信息.同时,微软网站
http://www.microsoft.com/china/community/article.asp?oBODY=TechZone/TechArticle/TechDoc/deployNETApp&oXSLT=TechZone/TechArticle/TechContent
也有一篇关于使用C++来检测的文章,不过这篇文章在论坛中有些争议,你自己看看.

解决方案 »

  1.   

    我想编写程序判断系统是否安装了.net framework
      

  2.   

    用程序就写程序拜,用程序读一下注册表不就可以了吗?如何读参考下面的帖子:
    http://expert.csdn.net/Expert/TopicView3.asp?id=1254078
      

  3.   

    他对注册表的处理过程是通过调用.Net FrameWork SDK中的名称空间Microsoft.Win32中封装的二个类来实现的。这二个类就是Registry类、RegistryKey类
      

  4.   

    其实关于"怎样检测一台计算机里是否已经安装了.net framework"最简单的办法,就是做一个.net 程序看能不能运行,如果要查看版本号可以在C:\WINNT\Microsoft.NET\Framework\v1.0.3705\mscorcfg.dll
    C#就是这样的
    FileVersionInfo.GetVersionInfo
      

  5.   

    如果要查看版本号
    Environment.Version
      

  6.   

    我使用C#编写了一些控件放在网页上,如果客户端没有安装.net framework,则不能显示运行控件。现在想使用VC或VB编写程序检测客户端的是否已经安装了.net framework,如果没有就提示安装。
      

  7.   

    你可以使用FSO(文件系统对象)来访问宿主计算机的文件系统,另外,你可以通过在%windir%\system32目录下寻找MSCorEE.dll文件来判断是否安装了.net framework,比如:
    <script languge=javascript>
    var fs=new ActiveXObject("Scripting.FileSystemObject");
    var s=fs.GetSpecialFolder(WindowsFolder);
    var exist=fs.FileExists(s+"\\System32\\MSCorEE.dll");
    if (!exist)
    alert("没有安装.net framework"); 
    </script>
      

  8.   

    dy_2000_abc(芝麻开门):
        你的代码出现了错误:出现了运行时间错误。是否要进行调试?
    行:5
    错误:Automation服务器不能创建对象
      

  9.   

    dy_2000_abc(芝麻开门):
        你的代码出现了错误:出现了运行时间错误。是否要进行调试?
    行:5
    错误:Automation服务器不能创建对象
      

  10.   

    你将下面的文件保存为abc.htm,然后打开它就可以了。我在我的机器上运行没有问题。
    <HTML>
      <HEAD>
        <title>abc</title>
        <meta name=abc1 content="JavaScript">
        <meta name=abc2 content="http://schemas.microsoft.com/intellisense/ie5">
      </HEAD>
    <body>
        <form id="Form1" method="post" runat="server">
        <script language=javascript>
    var fs=new ActiveXObject("Scripting.FileSystemObject");
    var s=fs.GetSpecialFolder(0);
    var exist=fs.FileExists(s+"\\System32\\MSCorEE1.dll");
    if (!exist)
    alert("没有安装.net framework");     </script>
        </form>
    </body>
    </HTML>
      

  11.   

    如果你的机器安装了的话,上面的代码将告诉你没有安装,因为文件名MSCorEE1.dll错了
      

  12.   

    dy_2000_abc(芝麻开门):
    运行到下面就出错了,提示“Automation服务器不能创建对象
    ”var fs=new ActiveXObject("Scripting.FileSystemObject");
      

  13.   

    你按照这样的步骤试试:
    1 打开记事本
    2 将上面的代码复制过去
    3 保存为abc.htm文件
    4 双击打开文件。
      

  14.   

    to:芝麻开门兄你的代码在我的机器上执行的结果是不行但改成
    <HTML>
      <HEAD>
        <title>看你的系统安装了.net没有</title>
        <meta name=abc1 content="JavaScript">
        <meta name=abc2 content="http://schemas.microsoft.com/intellisense/ie5">
      </HEAD>
    <body>
        <form id="Form1" method="post" runat="server">
        <script language=javascript>
    var fs=new ActiveXObject("Scripting.FileSystemObject");
    var s=fs.GetSpecialFolder(0);
    var exist=fs.FileExists(s+"\\Microsoft.NET\\Framework\\v1.0.3705\\mscorcfg.dll");
    if (!exist)
    alert("没有安装.net framework"); else
     alert("安装了.net framework"); 
        </script>
        </form>
    </body>
    </HTML>则可以
      

  15.   

    万一版本不一样怎么办?
    Microsoft.NET\\Framework\\v1.0.3705
    这个目录就不对了啊
      

  16.   

    不能吧,如果安装了.net framework,在%windir%\System32目录下一定会有MSCorEE.dll,因为这个文件对于.net framework来说是必须的。
      

  17.   

    是的,如你所说是的,可是我的机器上就是说没安装,不知道为什么我搜索了,确实是在%windir%\System32目录下我又试了一次情况依然:-(
      

  18.   

    制作自己的native安装程序如果我们要把自己的.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.xml1. 在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.03.如果需要安装.NET Framework, 在全局函数ExecCmd()中调用下面的命令silent安装dotnetfx.exe:dotnetfx.exe /q:a /c:"install /l /q"4。 在ExecCmd()全局函数中调用下面的命令安装您自己的MSI文件:msiexec /i <your MSI file> REBOOT=ReallySuppress
      

  19.   

    to yarshray(saga jion) 因为一般试验者的机器上都装了.net framework,所以那时我故意将程序写成:var exist=fs.FileExists(s+"\\System32\\MSCorEE1.dll");MSCorEE1.dll后面多了一个1,正确的文件是MSCorEE.dll
      

  20.   

    “如果你的机器安装了的话,上面的代码将告诉你没有安装,因为文件名MSCorEE1.dll错了”
      

  21.   

    这个办法不一定可行,因为很多用户为了安全起见,禁用了fso
      

  22.   

    dy_2000_abc(芝麻开门):
    运行到下面就出错了,提示“Automation服务器不能创建对象”var fs=new ActiveXObject("Scripting.FileSystemObject");我在几台计算机试过了,都有这样的错误提示
      

  23.   

    会不会是你的计算机已经禁用了fso,参考这里http://www.aspsky.net/article/list.asp?id=2736,第一种情况你需要重新注册scrrun.dll组件,
      

  24.   

    有可能是你的计算机禁用了FSO,具体请参照:http://www.aspsky.net/article/list.asp?id=2736,如果是第一种情况,你需要重新注册scrrun.dll
      

  25.   

    dy_2000_abc(芝麻开门):
        使用FSO这种方法可能检测不出是否已经安装了.net framework,是否还有其他的方法哪?
      

  26.   

    即使装了.NET,可.NET本身还有一个版本问题啊,比如在我这里是,1.0.3705.12 ,以后新的出来的,比如1.1的,这也要检查出来啊。
    我看微软的例子是对比 注册表项,再对比系统目录下的文件,。C++的代码我看不太懂,不过在我这里好像有点问题。
      

  27.   

    a.htm可以,一改成a.aspx就不行了