How to get operating system info in .NET |
| http://www.vbcity.com/forums/faq.asp?fid=30&cat=System&#TID4878
|
|
|
| - 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 2003、Windows 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 | |
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 name | Description |
---|
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
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.