HOW TO:使用 Visual C# .Net 确定 Windows 版本

文章翻译 文章翻译
文章编号: 304283 - 查看本文应用于的产品
本文的发布号曾为 CHS304283
展开全部 | 关闭全部

本文内容

概要

本文逐步介绍如何确定应用程序所在的系统上使用的是哪一种操作系统。本文还将说明 Microsoft Windows 95、Microsoft Windows 98、Microsoft Windows 98 Second Edition、Microsoft Windows Millennium Edition (Windows Me)、Microsoft Windows NT 3.51、Microsoft Windows NT 4.0、Microsoft Windows 2000 及 Microsoft XP 之间的区别。

要求

  • Microsoft Visual C# .NET
  • 具有中等程度的 Visual C# 编程知识

获取 Windows 版本数据

若要确定在系统上运行的操作系统,必须获取下面的数据:
+--------------------------------------------------------------+
|           |Windows|Windows|Windows|Windows NT|Windows|Windows|
|           |  95   |  98   |  Me   |    4.0   | 2000  |  XP   |
+--------------------------------------------------------------+
|PlatformID | 1     | 1     | 1     | 2        | 2     | 2     |
+--------------------------------------------------------------+
|Major      |       |       |       |          |       |       |
| 版本   | 4     | 4     | 4     | 4        | 5     | 5     |
+--------------------------------------------------------------+
|Minor      |       |       |       |          |       |       |
| 版本   | 0     | 10     | 90     | 0        | 0     | 1     |
+--------------------------------------------------------------+
备注:为了用于所有 32 位版本的 Windows,本文中的代码都经过了验证,虽然如此,但 Windows 95 和 Windows NT 3.51 并不支持 Microsoft Visual Studio .NET 或公共语言运行库。

获取操作系统信息

System 名称空间包含一个名为 OperatingSystem 的类。OperatingSystem 类的属性提供了有关正在使用的操作系统的必要信息。System.Environment 类的 OSVersion 属性返回 OperatingSystem 对象。
System.OperatingSystem osInfo = System.Environment.OSVersion;

确定平台

OperatingSystem 信息进行逻辑评估的第一步是确定正在使用哪一种平台。可以使用 OperatingSystem 类的 PlatformID 属性确定在使用哪一种平台。

例如,Win32Windows 属性的枚举值指明下列操作系统之一:
  • Windows 95
  • Windows 98
  • Windows 98 Second Edition
  • Windows Me
同样,WinNT 属性指明下列操作系统之一:
  • Windows NT 3.51
  • Windows NT 4.0
  • Windows 2000
  • Windows XP
switch(osInfo.Platform)
        {
case System.PlatformID.Win32Windows:         
                {
//Code to determine specific version of Windows 95, 
//Windows 98, Windows 98 Second Edition, or Windows Me.
                }

case System.PlatformID.Win32NT:
               {
//Code to determine specific version of Windows NT 3.51, 
//Windows NT 4.0, Windows 2000, or Windows XP.
               }
           
         }

确定 Windows 95、Windows 98、Windows 98 Second Edition 或 Windows Me 的具体版本

如果确定了平台是 Windows 95、Windows 98、Windows 98 Second Edition 或 Windows Me,则可分析主版本还次版本来确定具体版本。
//Platform is Windows 95, Windows 98, Windows 98 Second Edition, 
//or Windows Me.
case System.PlatformID.Win32Windows:
         
switch (osInfo.Version.Minor)
        {
case 0:
Console.WriteLine ("Windows 95");
break;
case 10:
if(osInfo.Version.Revision.ToString()=="2222A")
Console.WriteLine("Windows 98 Second Edition");
else
Console.WriteLine ("Windows 98");
break;
case 90:
Console.WriteLine("Windows Me");
break;
}break;

确定 Windows NT、Windows 2000 或 Windows XP 的具体版本

如果您确定平台是 Windows NT 3.51、Windows NT 4.0、Windows 2000 或 Windows XP,则可通过分析主版本或次版本来确定具体版本。
// Platform is Windows NT 3.51, Windows NT 4.0, Windows 2000,
// or Windows XP.
case System.PlatformID.Win32NT:

switch(osInfo.Version.Major)
        {
case 3:
Console.WriteLine("Windows NT 3.51");
break;
case 4:
Console.WriteLine("Windows NT 4.0");
break;
case 5:
if (osInfo.Version.Minor==0) 
Console.WriteLine ("Windows 2000");
else
Console.WriteLine("Windows XP");
break;
}break;

生成示例

下面的步骤生成一个演示此功能的测试方案:
  1. 在 Visual Studio .NET 中,打开一个新的 C# 控制台应用程序。默认情况下将打开 Class1.cs 的代码窗口。
  2. 将 Class1.cs 代码编辑器窗口中的所有代码替换为下列示例代码:
    using System;
    
    namespace determineOS_CS
    {  
    class Class1
       {
    static void Main(string[] args)
          {
    //Get OperatingSystem information from the system namespace.
    System.OperatingSystem osInfo =System.Environment.OSVersion;
             
    //Determine the platform.
    switch(osInfo.Platform)
             {
    // Platform is Windows 95, Windows 98, 
    // Windows 98 Second Edition, or Windows Me.
    case System.PlatformID.Win32Windows:
             
    switch (osInfo.Version.Minor)
                   {
    case 0:
    Console.WriteLine ("Windows 95");
    break;
    case 10:
    if(osInfo.Version.Revision.ToString()=="2222A")
    Console.WriteLine("Windows 98 Second Edition");
    else
    Console.WriteLine ("Windows 98");
    break;
    case 90:
    Console.WriteLine("Windows Me");
    break;
                   }
    break;
             
    // Platform is Windows NT 3.51, Windows NT 4.0, Windows 2000,
    // or Windows XP.
    case System.PlatformID.Win32NT:
    
    switch(osInfo.Version.Major)
    
                   {
    case 3:
    Console.WriteLine("Windows NT 3.51");
    break;
    case 4:
    Console.WriteLine("Windows NT 4.0");
    break;
    case 5:
    if (osInfo.Version.Minor==0) 
    Console.WriteLine ("Windows 2000");
    else
    Console.WriteLine("Windows XP");
    break;
    }break;
             }
    Console.ReadLine();
          }
       }
    }
  3. 按 CTRL+F5 组合键以运行该应用程序。请注意,Windows 版本将在控制台窗口中出现。

属性

文章编号: 304283 - 最后修改: 2002年7月29日 - 修订: 1.0
这篇文章中的信息适用于:
  • Microsoft Visual C# .NET 2002 标准版
关键字:?
kbhowto kbhowtomaster kbprod2web KB304283
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com