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

2009-11-28 11:26 3135 8 8 分类: 软件与OS
2 托管代码: 运用 System.Environment.GetFolderPath函数,通过指定我们想要获取的“已知文件夹”为参数,从而获取相应的文件夹的正确路径。

  •   Environment.SpecialFolder.CommonApplicationData – 所有用户都可以访问的使用程序数据适合放置在这个目录下。
  •   Environment.SpecialFolder.LocalApplicationData – 每个用户单独访问的使用程序数据适合放置在这个目录下。
  •   Environment.SpecialFolder.ApplicationData – 每个用户单独访问的使用程序数据适合放置在这个目录下。这是“随身文件夹”。

机器名


代码:

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: 可以用来推断大版本中的小版本。

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



操作体统名称和OSVersion参数的对应关系
操作系统名称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

需要指出的是,目前尚未发布的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"
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
8
关闭 站长推荐上一条 /3 下一条