J'ai donc quelques constantes:Concaténer, convertir en USHORT, comparer contre ushort
const ushort _WIN32_WINNT_NT4 = 0x0400;
const ushort _WIN32_WINNT_WIN2K = 0x0500;
....
Et puis j'ai un numéro de version, le numéro de version mineure, et le numéro de service pack, que, lorsque vous concaténer les ensemble, c'est le même que le nombre ci-dessus - sauf 2 d'entre eux sont int
et l'un est un string
. Je peux les obtenir tous dans une chaîne comme ceci:
string version = majorVersion.ToString() + minorVersion.ToString() + sp;
Pour Windows 2000, cela ressemblerait "500"
. Il "correspond" à l'ushort, juste sans le 0x0
.
Ce que je voudrais faire est la main de version
à une fonction, en tant que ushort
qui retourne le système d'exploitation correct:
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.";
}
}
Le problème est, même si je fais:
ushort uniNum = Convert.ToUInt16(version);
Et dites qu'il l'envoie en tant que 500
, la constante est 0x0500
, donc il ne trouve jamais le système d'exploitation et renvoie Unknown OS version
, à la place. Lorsque je débogue et passe la souris sur _WIN32_WINNT_WIN2K
, il s'agit en fait de 1280
au format décimal. _WIN32_WINNT_NT4
est affiché comme 1024
, donc "400"
ne le correspondrait jamais.
Et si j'inclure le "0x0":
ushort uniNum = Convert.ToUInt16("0x0" + version);
Il me donne une erreur que l'entrée est au format incorrect.
Il me manque probablement quelque chose de simple, mais je ne trouve rien qui ait été utile.
Oui, exactement ce dont j'avais besoin. Merci un million! – vapcguy