我需要检测安装了哪种类型的Windows操作系统( edition )。按类型我的意思是,例如:“Home”,“Enterprise”或“Professional”。请不要问为什么(我已经与需求向导进行了艰难的斗争)。
现在的问题是Windows类型似乎是本地化的,我需要一种方法在switch语句中使用它们来做不同的行为。
现在我这样做:
_os = (from x in new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem").Get().OfType<ManagementObject>()
select x.GetPropertyValue("Caption")).First().ToString().Trim();
switch (_os)
{
case "Microsoft Windows XP Professional":
{
// Do professional stuff...
break;
}
case "Microsoft Windows 7 Professional":
case "Microsoft Windows 7 Ultimate":
case "Microsoft Windows 7 Enterprise":
{
// Do ultimate enterprisey professional stuff
break;
}
default:
{
// File not found
break;
}
}
任何人都知道如何做到这一点不会遇到本地化问题?
答案 0 :(得分:0)
在Codeproject上是一篇很好的文章(用dll)来做到这一点:
Getting Operating System Version Info - Even for Windows 8!
他得到了他的奶酪:
答案 1 :(得分:0)
请参阅Win32_OperatingSystem
课程中的OperatingSystemSKU
属性,这是基于uint
的枚举。
答案 2 :(得分:0)
您可以P / Invoke GetProductInfo本机API。 C#can be found here
中的用法和示例虽然它仅支持Vista及以上版本。
以下是an example它在C ++中的完成方式,可以很容易地进行P / Invoked
对于XP,我认为没有办法以非本地化的方式获取此信息。