所以我有一些常量:連接字符串,轉換爲USHORT,比較反對USHORT
const ushort _WIN32_WINNT_NT4 = 0x0400;
const ushort _WIN32_WINNT_WIN2K = 0x0500;
....
然後,我有一個主版本號,次版本號和服務包號,即,當您連接那些在一起,它與上面的數字相同 - 除了其中2個是int
和一個是string
。我可以讓他們都變成像這樣的字符串:
string version = majorVersion.ToString() + minorVersion.ToString() + sp;
對於Windows 2000,這看起來像"500"
。它「匹配」ushort,只是沒有0x0
。
我希望做的是手斷version
的功能,作爲ushort
返回正確的操作系統:
private static string WindowsVersion(ushort uniNum)
{
switch (uniNum)
{
case _WIN32_WINNT_NT4:
return "Windows NT 4.0";
case _WIN32_WINNT_WIN2K:
return "Windows 2000";
....
default:
return "Unknown OS version.";
}
}
的問題是,即使我做的:
ushort uniNum = Convert.ToUInt16(version);
並說它發送爲500
,常數爲0x0500
,所以它永遠不會找到操作系統並返回Unknown OS version
,而不是。當我調試並將鼠標懸停在_WIN32_WINNT_WIN2K
上時,實際上它是十進制格式的1280
。 _WIN32_WINNT_NT4
顯示爲1024
,因此"400"
永遠不會匹配它。
如果我包括「爲0x0」:
ushort uniNum = Convert.ToUInt16("0x0" + version);
它給了我一個錯誤的輸入格式不正確。
我可能錯過了一些簡單的東西,但我找不到任何有用的東西。
是的,正是我所需要的。太感謝了! – vapcguy