How to get operating system info in .NET

How to get operating system info in .NET
 B'mark-It! 
http://www.vbcity.com/forums/faq.asp?fid=30&cat=System&#TID4878


 - posted by jspano - last updated on 7/28/2003 4:11:03 AM 
1 comment(s) [ read comments ]
 - url - http://www.vbcity.com/forums/faq.asp?tid=4878
In VS.Net it is easy to get operating system info

For C#

Code:
// Get the Operating System From Environment Class
OperatingSystem os = Environment.OSVersion;

// Get the version information
Version ver = os.Version;

Console.WriteLine(ver.Major);
Console.WriteLine(ver.Minor);
Console.WriteLine(ver.Revision);
Console.WriteLine(ver.Build);

// Get Platform Info
Console.WriteLine(os.Platform);


For VB.NET

Code:
Dim os As OperatingSystem
os = Environment.OSVersion
Dim ver As Version
ver = os.Version

'Get the version info
Console.WriteLine(ver.Major)
Console.WriteLine(ver.Minor)
Console.WriteLine(ver.Revision)
Console.WriteLine(ver.Build)

'Get the platform
Console.WriteLine(os.Platform.ToString)


The output for a Windows 2000 pro computer:
5
0
0
2195
Win32NT



得到操作系统版本信息

http://dotnet.aspx.cc/ShowDetail.aspx?id=6977HLMY-ELPN-4KIR-BI89-7YS2LNENT5HR
  MsgBox(Environment.OSVersion.ToString) 


  NET Framework类库的System.Net名称空间提供了一个简单的网络编程接口。Dns类提供了简单的域名解析功能,它是一个静态的类,可以通过Internet Domain Name System(DNS)得到指定主机的信息,DNS查询得到的主机信息是一个IPHostEntry类的实例。如果指定的主机在DNS数据库中有多于一个的Entry,IPHostEntry将包含多个地址及其别名。下面的代码实现了得到机器所有IP的功能。 

http://dotnet.aspx.cc/ShowDetail.aspx?id=D5E84294-21AC-4815-579F-7F8786A31B3D



WMI 脚本入门:第三部分

http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/softwaredev/WDdnclinicscripting3.mspx


什么是 WMI?

WMI最初于 1998 年作为一个附加组件与 Windows NT 4.0 Service Pack 4 一起发行,是内置在 Windows 2000、Windows XP 和 Windows Server 2003 系列操作系统中核心的管理支持技术。基于由 Distributed Management Task Force (DMTF) 所监督的业界标准,WMI 是一种规范和基础结构,通过它可以访问、配置、管理和监视所有的 — 几乎所有的 Windows 资源。

要掌握 WMI 的强大功能和范围,需要考虑以前(或者现在)如何管理并监视 Windows 工作站和服务器。您可能用过或仍在使用众多的图形化管理工具来管理 Windows 资源 — 例如磁盘、事件日志、文件、文件夹、文件系统、网络组件、操作系统设置、性能数据、打印机、进程、注册表设置、安全性、服务、共享、用户、组等等。

尽管图形化工具提供了一种功能管理解决方案,它们所共有的东西是什么呢?一种答案是,在 WMI 之前,所有的 Windows 图形化管理工具都依赖于 Win32 应用程序编程接口(Application Programming Interfaces,APIs)来访问和管理 Windows 资源。为什么?因为在 WMI 之前,能够以编程方式访问 Windows 资源的惟一方法就是通过 Win32 API。这种情况使 Windows 系统管理员无法通过一种简便的方法利用常见的脚本语言来自动化常用的系统管理任务,因为大多数脚本语言都不能直接调用 Win32 API。通过提供一致的模型和框架,WMI 改变了这种情况 — 通过模型和框架,所有的 Windows 资源均被描述并公开给外界。最好的一点是,系统管理员可以使用 WMI 脚本库创建系统管理脚本,从而管理任何通过 WMI 公开的 Windows 资源!

使用 Windows Script Host 和 Microsoft Visual Basic Scripting Edition (VBScript),或任何支持 COM 自动化的脚本语言(例如,ActiveState Corporation 的 ActivePerl),可以编写脚本来管理和自动化企业系统、应用程序和网络的下列方面:

Windows Server 2003Windows XP 专业版和 Windows 2000 系统管理。您可以编写脚本来检索性能数据,管理事件日志、文件系统、打印机、进程、注册表设置、计划程序、安全性、服务、共享以及很多其他的操作系统组件和配置设置。

网络管理。您可以创建基于 WMI 的脚本来管理网络服务,例如 DNS、DHCP 和启用 SNMP 的设备。

实时健全监视。使用 WMI 事件订阅,您可以编写代码以在事件发生时监视并响应事件日志项,监视并响应文件系统、注册表修改及其他实时的操作系统更改。基本上对 WMI来说,WMI 事件订阅和通知是在 SNMP 环境中 SNMP 陷阱是什么。

Windows .NET 企业服务器管理。您可以编写脚本来管理 Microsoft Application Center、Operations Manager、Systems Management Server、Internet Information Server、Exchange Server 和 SQL Server。

http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/softwaredev/WDdnclinicscripting.mspx

  Imports System Imports System.Net Module Module1 Sub Main() Dim strMachineName As String '得到主机名 strMachineName = Dns.GetHostName() Console.WriteLine("Host Name: " + strMachineName) '通过名字得到主机 Dim ipHost As IPHostEntry ipHost = Dns.GetHostByName(strMachineName) '你可以得到网络上任何站点的DNS数据信息。 '语法如下: 'ipHost = Dns.GetHostByName("xml.sz.luohuedu.net") Console.WriteLine("Host Aliases: " + ipHost.Aliases.Length.ToString()) '以数组的形式返回相关主机的地址信息 Dim ipAddr() As IPAddress = ipHost.AddressList Dim count As Integer 'Enumerate the IP Addresses For count = 0 To ipAddr.GetUpperBound(0) Console.Write("IP 地址 {0}:{1} ", count, _ ipAddr(count).ToString) Next End Sub End Module 




NET Framework Class Library 

PlatformID Enumeration

Describes the platforms supported by an assembly.

[Visual Basic]
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemplatformidclasstopic.asp
<Serializable> Public Enum PlatformID [C#] [Serializable] public enum PlatformID [C++] [Serializable] __value public enum PlatformID [JScript] public Serializable enum PlatformID
Remarks

These flags are used to bind to an assembly.

Members
Member nameDescription
Win32NT

Supported by the .NET Compact Framework.

The operating system is Windows NT or later.
Win32S

Supported by the .NET Compact Framework.

The operating system is Win32s. Win32s is a layer that runs on 16-bit versions of Windows to provide access to 32-bit applications.
Win32Windows

Supported by the .NET Compact Framework.

The operating system is Windows 95 or later.
WinCE

Supported by the .NET Compact Framework.

The operating system is Windows CE .NET.
Requirements

Namespace: System

Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family, .NET Compact Framework

Assembly: Mscorlib (in Mscorlib.dll)

See Also

System Namespace | PlatformID Enumeration (Visual J# Syntax) | Managed Extensions for C++ Programming 






Get OS Name and Version
http://weblogs.asp.net/mhawley/archive/2004/08/23/219117.aspx

Awhile ago, I had come across an article describing on how to get the current operating system version and name through .NET. While this article was great for Windows XP and prior OSes, it didn't really pan out too much for Windows 2003 Server and Longhorn. So after a bit of digging to determine the version numbers (thanks to Adam for getting me the current Longhorn version #) I was able to successfully map the correct versions/names. Here's my code:

private string GetOSName()
{
System.OperatingSystem os = System.Environment.OSVersion;
string osName = "Unknown";


switch(os.Platform)
{
case System.PlatformID.Win32Windows:
switch(os.Version.Minor)
{
case 0:
osName = "Windows 95";
break;
case 10:
osName = "Windows 98";
break;
case 90:
osName = "Windows ME";
break;
}
break;
case System.PlatformID.Win32NT:
switch(os.Version.Major)
{
case 3:
osName = "Windws NT 3.51";
break;
case 4:
osName = "Windows NT 4";
break;
case 5:
if(os.Version.Minor == 0)
osName = "Windows 2000";
else if(os.Version.Minor == 1)
osName = "Windows XP";
else if(os.Version.Minor == 2)
osName = "Windows Server 2003";
break;
case 6:
osName = "Longhorn";
break;
}
break;
}

return osName + ", " + os.Version.ToString();
}

Adam has also informed me that in Longhorn, or rather .NET 2.0, there is a new property that will return this for you, VersionString.

posted on Monday, August 23, 2004 4:26 PM

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值