如何使用Api检测系统是否安装.net Freamwork及当前的版本(最好有c#示例代码)谢谢

解决方案 »

  1.   

    在MSDN关于制作.net打包程序的部分有C++检测是否安装.net Framework的代码,你可以参考。
      

  2.   

    检查/%windir%/System32/下面是否含有MSCOREE.DLL文件如果有就所名已经安装了FMHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy下可以检查到机器上安装了那些版本的FM
      

  3.   

    帮你写了一段代码using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;
    using Microsoft.Win32;namespace DetectDotNetVersion
    {
        class Program
        {
            static void Main()
            {
                string windir = System.Environment.SystemDirectory;
                if (File.Exists(windir + "\\" + "MSCOREE.DLL"))
                {
                    RegistryKey classroot = Registry.LocalMachine;
                    classroot = classroot.OpenSubKey("software\\microsoft\\.netframework");
                    //classroot = classroot.OpenSubKey("");
                    //classroot = classroot.OpenSubKey("");
                    
                    object obj = classroot.GetValue("sdkInstallRootv1.1");
                    if(obj!=null)                
                        Console.WriteLine(".NetFramework1.1 has been installed.The directory is "+obj.ToString());
                    obj = classroot.GetValue("sdkInstallRootv2.0");
                    if (obj != null)
                        Console.WriteLine(".NetFramework2.0 has been installed.The directory is " + obj.ToString());
                }
                else
                {
                    Console.WriteLine(".Net Framework is not installed");
                }            Console.ReadLine();    
            }
        }
    }
      

  4.   

    我可以很负责任地告诉你用C#检测装没装.net framework是绝对不行的,如果你写出来的程序能运行也就肯定装了.net framework,如果没装,你连运行都不行,还检测什么。
      

  5.   

    检测版本还可以,但查看有无安装.NETframework是不可行的,你如果没有安装.NETframework,你的程序根本不能运行
      

  6.   

    不知道能不能只拷贝几个有用的DLL文件?
      

  7.   

    引用 “我可以很负责任地告诉你用C#检测装没装.net framework是绝对不行的,如果你写出来的程序能运行也就肯定装了.net framework,如果没装,你连运行都不行,还检测什么。”……
    那么有别的办法可以实现这样的功能吗?
      

  8.   

    Mark.是啊,问题问的就比较有点矛盾啊。
      

  9.   

    制作安装包可以设置检测.net framwork是否安装。
      

  10.   

    用C/C++或者别的语言来写一个程序检查,用C#肯定不行,没装.NET运行时肯定不能执行C#程序.
      

  11.   

    不能用基于.net的c#来检测是否安装
    应该有基于win32的语方来写程序进行安装检测
      

  12.   

    程序安装的时候把framework打进去,微软有个检测的程序
    这样安装程序的时候,如果机器上已经安装framework就直接安装程序,如果没有安装就自动安装framework
      

  13.   

    呵呵。。“程序安装的时候把framework打进去”程序本身是1MB,.NET有20多MB,这样一点都不太现实,除非用光盘,让使用者一次性下载这么大的安装程序确实有点不太合适。
      

  14.   

    没有试过,我猜,编译的时候,编译器会连上一个检测运行环境的代码片断吧。正如我们在DOS下运行WINDOWS程序时,程序会给出一个提示后退出。
      

  15.   

    "没有试过,我猜,编译的时候,编译器会连上一个检测运行环境的代码片断吧。正如我们在DOS下运行WINDOWS程序时,程序会给出一个提示后退出。"确定会有提示,但是是出错的,无法运行的提示。我想,这并不是楼主要的功能。在DOS下运行WINDOWS程序时会提示无法运行在DOS模式,也是出错提示而已。
      

  16.   

    有这个提示也就足够了啊:这样用户就知道该先安装.net framework了。
      

  17.   

    .net 2005的安装和部署中有这样的检测,添加一个安装条件,如果没装的话,可以给他也装上
    .net framework了