none
C#怎么获取当前使用的是什么操作系统呀(win7) RRS feed

答案

  •      string buffer;
                ManagementObjectSearcher searcher;
                searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT   PartComponent   FROM   Win32_SystemOperatingSystem");
    
                foreach (ManagementObject queryObj in searcher.Get())
                {
                    buffer = queryObj["PartComponent"].ToString();
                    MessageBox.Show(buffer);
                    
                }
                searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT   Caption   FROM   Win32_OperatingSystem");
    
                foreach (ManagementObject queryObj in searcher.Get())
                {
                    buffer = queryObj["Caption"].ToString();
                    MessageBox.Show(buffer);
                    
                }   

    努力+方法=成功
    • 已标记为答案 server126 2010年3月11日 8:01
    2010年3月11日 7:33
  • 你好!
         你试试这个方法:
         string strSystem = Environment.OSVersion.ToString();  //只能显示 Windows NT 6.1.7600.0
        

    周雪峰
    • 已标记为答案 server126 2010年3月11日 8:01
    2010年3月11日 7:45
    版主
  • windows7只是个名称 微软做好系统后再取名的 没打算加进去
    Windows NT 6.1.7600 等于windows7 正式版
    • 已标记为答案 server126 2010年3月11日 8:00
    2010年3月11日 7:49
    版主
  • 你好!
         你试试这个方法:
         string strSystem = Environment.OSVersion.ToString();  //只能显示 Windows NT 6.1.7600.0
        

    周雪峰

    只要显示 Windows NT 6.1 7600.0这样的都是Win7操作系统吗?
    不分(专业版、家庭版....)之类的吧?

    是的 专业版旗舰版 只是功能上差距 跟获取版号无关的
    • 已标记为答案 server126 2010年3月11日 8:00
    2010年3月11日 7:59
    版主
  • 你好!
         你试试这个方法:
         string strSystem = Environment.OSVersion.ToString();  //只能显示 Windows NT 6.1.7600.0
        

    周雪峰

    只要显示 Windows NT 6.1 7600.0这样的都是Win7操作系统吗?
    不分(专业版、家庭版....)之类的吧?

    不一定。显示为 Windows NT 6.1.7600 的,可能是 Windows 7 RTM,也可能是 Windows Server 2008 R2。

    还有,Windows 7 Service Pack 1 的版本号为 6.1.7601,如果采用这种判断方式,以后您升到了 SP 1,那么您的程序可能无法运行了。

    您需要判断 3 个地方,一是 Environment.OSVersion.Major = 6,而是 Environment.OSVersion.Minor = 1 并且注册表 HKLM\Software\Microsoft\Windows NT\CurrentVersion\InstallationType != Server。
    Mark Zhou
    2010年3月11日 9:36

全部回复

  • 想实现只程序只能在win7操作系统下运行

    我获取的是:Microsoft Windows NT 6.1.7600.0
    我怎么判断它就是win7操作系统

    2010年3月11日 7:26
  •      string buffer;
                ManagementObjectSearcher searcher;
                searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT   PartComponent   FROM   Win32_SystemOperatingSystem");
    
                foreach (ManagementObject queryObj in searcher.Get())
                {
                    buffer = queryObj["PartComponent"].ToString();
                    MessageBox.Show(buffer);
                    
                }
                searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT   Caption   FROM   Win32_OperatingSystem");
    
                foreach (ManagementObject queryObj in searcher.Get())
                {
                    buffer = queryObj["Caption"].ToString();
                    MessageBox.Show(buffer);
                    
                }   

    努力+方法=成功
    • 已标记为答案 server126 2010年3月11日 8:01
    2010年3月11日 7:33
  • 想实现只程序只能在win7操作系统下运行

    我获取的是:Microsoft Windows NT 6.1.7600.0
    我怎么判断它就是win7操作系统


    ??????
    2010年3月11日 7:43
  • 你好!
         你试试这个方法:
         string strSystem = Environment.OSVersion.ToString();  //只能显示 Windows NT 6.1.7600.0
        

    周雪峰
    • 已标记为答案 server126 2010年3月11日 8:01
    2010年3月11日 7:45
    版主
  • windows7只是个名称 微软做好系统后再取名的 没打算加进去
    Windows NT 6.1.7600 等于windows7 正式版
    • 已标记为答案 server126 2010年3月11日 8:00
    2010年3月11日 7:49
    版主
  • 你好!
         你试试这个方法:
         string strSystem = Environment.OSVersion.ToString();  //只能显示 Windows NT 6.1.7600.0
        

    周雪峰

    只要显示 Windows NT 6.1 7600.0这样的都是Win7操作系统吗?
    不分(专业版、家庭版....)之类的吧?
    2010年3月11日 7:50
  • 你好!
         你试试这个方法:
         string strSystem = Environment.OSVersion.ToString();  //只能显示 Windows NT 6.1.7600.0
        

    周雪峰

    只要显示 Windows NT 6.1 7600.0这样的都是Win7操作系统吗?
    不分(专业版、家庭版....)之类的吧?

    是的 专业版旗舰版 只是功能上差距 跟获取版号无关的
    • 已标记为答案 server126 2010年3月11日 8:00
    2010年3月11日 7:59
    版主
  • 谢谢各位
    2010年3月11日 8:01
  • 你好!
         你试试这个方法:
         string strSystem = Environment.OSVersion.ToString();  //只能显示 Windows NT 6.1.7600.0
        

    周雪峰

    只要显示 Windows NT 6.1 7600.0这样的都是Win7操作系统吗?
    不分(专业版、家庭版....)之类的吧?

    是的!
    周雪峰
    2010年3月11日 8:02
    版主
  • 你好!
         你试试这个方法:
         string strSystem = Environment.OSVersion.ToString();  //只能显示 Windows NT 6.1.7600.0
        

    周雪峰

    只要显示 Windows NT 6.1 7600.0这样的都是Win7操作系统吗?
    不分(专业版、家庭版....)之类的吧?

    不一定。显示为 Windows NT 6.1.7600 的,可能是 Windows 7 RTM,也可能是 Windows Server 2008 R2。

    还有,Windows 7 Service Pack 1 的版本号为 6.1.7601,如果采用这种判断方式,以后您升到了 SP 1,那么您的程序可能无法运行了。

    您需要判断 3 个地方,一是 Environment.OSVersion.Major = 6,而是 Environment.OSVersion.Minor = 1 并且注册表 HKLM\Software\Microsoft\Windows NT\CurrentVersion\InstallationType != Server。
    Mark Zhou
    2010年3月11日 9:36
  • MarkZhou的方法是稳妥的,我上面的回复是不正确的,十分抱歉啊!险些误导了你!
    周雪峰
    2010年3月11日 10:56
    版主
  • mark一下,估计会用到。

    顺便问一下,.net 35(或其他版本)对windows的版本有影响么?不是指有些功能不支持,而是指相同的功能,在不同的系统上是否会有不同的行为?至少我到现在还没在msdn里看到这方面的说明。

    霸王
    2010年3月11日 13:55
  • 某些地方会因为系统的不同而有不同的表现!
    周雪峰
    2010年3月11日 14:04
    版主