Sto provando a giocare con l'oggetto Environment.OSVersion.Version
e non posso realmente dire quale versione indichi che il sistema operativo è Windows XP o superiore (ad es. Voglio escludere Windows 2000, ME o versioni precedenti).Come sapere se il sistema operativo è Windows XP o superiore?
risposta
Utilizzare l'oggetto System.OperatingSystem
, quindi filtrare sui numeri di versione minore & Major.
Ho usato queste funzioni in passato:
static bool IsWinXPOrHigher()
{
OperatingSystem OS = Environment.OSVersion;
return (OS.Platform == PlatformID.Win32NT) && ((OS.Version.Major > 5) || ((OS.Version.Major == 5) && (OS.Version.Minor >= 1)));
}
static bool IsWinVistaOrHigher()
{
OperatingSystem OS = Environment.OSVersion;
return (OS.Platform == PlatformID.Win32NT) && (OS.Version.Major >= 6);
}
Verificare la proprietà Major
è maggiore o uguale a 5, e se 5 quindi Minor
è almeno 1. (XP era 5.1, 2003 era 5.2, Vista/2008 erano 6.0).
... e Windows 7 è 6.1 – Esko
Nota che WinXP a 32 bit è la versione 5.1; WinXP 64-bit è la versione 5.2. –
E questo è esattamente il motivo per cui dovresti cercare la cosa che ti serve invece di controllare il numero della versione, e perché Win7 è la versione 6.1 e non la 7.0. Controllare il numero di versione è facile da sbagliare e non sempre ti dice cosa volevi sapere. – Stewart
Non si dovrebbe verificare il numero di versione. Invece, dovresti verificare la funzionalità di cui hai bisogno. Se si tratta di un'API specifica, ad esempio LoadLibrary e GetProcAddress, in questo modo, non si dipende dal numero di versione.
Dato che una dipendenza è la ragione per cui ha bisogno della versione, questa è davvero una buona idea. – daramarak
Come si controlla se il sistema operativo supporta RegFree COM? – AngryHacker
Prova a caricare un componente dal manifest. Se non funziona, la piattaforma non supporta regfree COM – Stewart
PlatformID è ancora Win32NT se il sistema operativo è a 64 bit? – AngryHacker
@AngryHacker PlatformID.Win32 = "Il sistema operativo è Windows NT o successivo.", Quindi sì. – ParmesanCodice
Ho cambiato il codice per IsWinXp per verificare se è Windows XP o superiore. Lo stesso con Vista. – AngryHacker