在.Net Framework中获得Windows目录、机器名、操作系统版本信息等系统环境信息

Windows操作系统环境信息包括计算机相关信息如名字、用户名、操作系统、CPU等等;系统目录信息如Windows目录、System32目录、Program Files目录等等;用户目录信息如Application Data目录、Cookies目录、开始菜单目录等等。

在.Net Framework中获得各种环境信息已经不是很难的事情。不过要能背全了,倒也不那么容易。所以写此文备忘。

代码均以VB.Net代码为例,C#或者C++代码很类似。

计算机信息

机器名

代码:

Environment.MachineName

结果示例:

"BOBOPO.COM"

用户名

代码:

Environment.UserName

结果示例:

"Bobopo"

CPU数量

代码:

Environment.ProcessorCount

结果示例:

1

操作系统内部版本信息

代码:

Environment.OSVersion.VersionString

结果示例:

"Microsoft Windows NT 5.1.2600 Service Pack 2"

操作系统版本号

代码:

Environment.OSVersion.Version.ToString

结果示例:

"5.1.2600.131072"

操作系统Service Pack号

代码:

Environment.OSVersion.ServicePack

结果示例:

"Service Pack 2"

.Net Framework版本号

代码:

Environment.Version.ToString

结果示例:

"2.0.50727.1433"

系统目录

Windows操作系统主目录

代码:

Directory.GetParent(Environment.SystemDirectory).FullName

结果示例:

"C:\WINDOWS"

System32系统目录

代码:

Environment.SystemDirectory

结果示例:

"C:\WINDOWS\system32"

Program Files程序文件目录

代码:

Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)

结果示例:

"C:\Program Files"

Common Files程序公共文件目录

代码:

Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFiles)

结果示例:

"C:\Program Files\Common Files"

所有用户公用的Application Data程序数据目录

代码:

Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)

结果示例:

"C:\Documents and Settings\All Users\Application Data"

用户目录

Application Data程序数据目录

代码:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

结果示例:

"C:\Documents and Settings\Bobopo\Application Data"

Desktop桌面目录

代码:

Environment.GetFolderPath(Environment.SpecialFolder.Desktop)

结果示例:

"C:\Documents and Settings\Bobopo\Desktop"

Cookies目录

代码:

Environment.GetFolderPath(Environment.SpecialFolder.Cookies)

结果示例:

"C:\Documents and Settings\Bobopo\Cookies"

Favorites个人爱好目录

代码:

Environment.GetFolderPath(Environment.SpecialFolder.Favorites)

结果示例:

"C:\Documents and Settings\Bobopo\Favorites"

My Documents我的文档目录

代码:

Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)

结果示例:

"C:\Documents and Settings\Bobopo\My Documents"

Start Menu开始菜单目录

代码:

Environment.GetFolderPath(Environment.SpecialFolder.StartMenu)

结果示例:

"C:\Documents and Settings\Bobopo\Start Menu"

Recent最近访问目录

代码:

Environment.GetFolderPath(Environment.SpecialFolder.Recent)

结果示例:

"C:\Documents and Settings\Bobopo\Recent"

Templates文档模板目录

代码:

Environment.GetFolderPath(Environment.SpecialFolder.Templates)

结果示例:

"C:\Documents and Settings\Bobopo\Templates"

Local Settings本地设定的Application Data目录

代码:

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)

结果示例:

"C:\Documents and Settings\Bobopo\Local Settings\Application Data"

History访问历史目录

代码:

Environment.GetFolderPath(Environment.SpecialFolder.History)

结果示例:

"C:\Documents and Settings\Bobopo\Local Settings\History"

操作系统名称

似乎.Net中并没有一种直接的方法获得操作系统的名称,至少我没有找到。不过可以通过Environment.OSVersion中的内部版本号来推断出操作系统的名称。

原理

与操作系统名称相关的Environment.OSVersion属性如下:

  • Platform: 可以用来推断Windows 3.1系列、Windows 95系列和Windows NT系列。
  • Version.Major: 可以用来推断产品系列中的大版本。
  • Version.Minor: 可以用来推断大版本中的小版本。

具体的推断关系如下表所示:

操作系统名称PlatformVersion.MajorVersion.Minor
Windows 3.10??
Windows 95140
Windows 981410
Windows Me1490
Windows NT 3.512351
Windows NT 4.0240
Windows 2000250
Windows XP251
Windows 2003252
Windows Vista260
操作体统名称和OSVersion参数的对应关系

需要指出的是,目前尚未发布的Windows 2008和Windows Vista具有相同的特征,所以用这种方法无法区分这两个版本。

可以用下面的函数来计算出操作系统的名称。

Public Shared Function GetOSVersionText() As String
Dim v As Version = Environment.OSVersion.Version
Select Case Environment.OSVersion.Platform
Case PlatformID.Win32S : Return "3.1"
Case PlatformID.Win32Windows
Select Case v.Minor
Case 0 : Return "95"
Case 10 : Return "98"
Case 90 : Return "Me"
End Select
Case PlatformID.Win32NT
Select Case v.Major
Case 3 : Return "NT 3.51"
Case 4 : Return "NT 4.0"
Case 5
Select Case v.Minor
Case 0 : Return "2000"
Case 1 : Return "XP"
Case 2 : Return "2003"
End Select
Case 6 : Return "Vista"
End Select
Case PlatformID.WinCE
Return "CE " & v.Major.ToString & "." & v.Minor.ToString
End Select
Return "Unknown"
End Function

操作系统名称

代码:

"Microsoft Windows " & GetOSVersionText()

结果示例:

"Microsoft Windows XP"

带Service Pack号的操作系统名称

代码:

"Microsoft Windows " & GetOSVersionText() & " " & Environment.OSVersion.ServicePack

结果示例:

"Microsoft Windows XP Service Pack 2"

作者: 杰棍 [Jegwon]

波波坡原创文章 链接:http://www.bobopo.com/article/code/dotnet_environment_variables.htm

标签:

关键词: .Net Framework, Windows, VB.Net, Windows目录, System32目录, 机器名, 操作系统名称, 获得, 取到, 得到, 如何, 用户名, CPU数量, 操作系统版本, .Net版本, Program Files目录, Application Data目录, Desktop目录, Cookies目录, My Documents目录, History目录, Environment.OSVersion, Windows NT, Windows XP, Vista

创建日期: 2009-01-13

文库 微博 博客 作品 首页