Memverifikasi Versi Sistem
[ Penggunaan fungsi VerifyVersionInfo untuk memverifikasi sistem operasi yang sedang berjalan tidak disarankan. Sebagai gantinya, gunakan API Pembantu Versi]
Ini berisi contoh yang menggunakan fungsi VerifyVersionInfo untuk menentukan apakah aplikasi berjalan pada sistem operasi tertentu.
Langkah utama dalam setiap contoh adalah sebagai berikut:
- Atur nilai yang sesuai dalam struktur OSVERSIONINFOEX .
- Atur masker kondisi yang sesuai menggunakan makro VER_SET_CONDITION .
- Panggil VerifyVersionInfo untuk melakukan pengujian.
Contoh 1
Contoh berikut menentukan apakah aplikasi berjalan pada Windows XP dengan Paket Layanan 2 (SP2) atau versi Windows yang lebih baru, seperti Windows Server 2003 atau Windows Vista.
#include <windows.h>
#include <stdio.h>
BOOL Is_WinXP_SP2_or_Later ()
{
OSVERSIONINFOEX osvi;
DWORDLONG dwlConditionMask = 0;
int op=VER_GREATER_EQUAL;
// Initialize the OSVERSIONINFOEX structure.
ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
osvi.dwMajorVersion = 5;
osvi.dwMinorVersion = 1;
osvi.wServicePackMajor = 2;
osvi.wServicePackMinor = 0;
// Initialize the condition mask.
VER_SET_CONDITION( dwlConditionMask, VER_MAJORVERSION, op );
VER_SET_CONDITION( dwlConditionMask, VER_MINORVERSION, op );
VER_SET_CONDITION( dwlConditionMask, VER_SERVICEPACKMAJOR, op );
VER_SET_CONDITION( dwlConditionMask, VER_SERVICEPACKMINOR, op );
// Perform the test.
return VerifyVersionInfo(
&osvi,
VER_MAJORVERSION | VER_MINORVERSION |
VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
dwlConditionMask);
}
void main()
{
if(Is_WinXP_SP2_or_Later())
printf("The system meets the requirements.\n");
else printf("The system does not meet the requirements.\n");
}
Contoh 2
Kode berikut memverifikasi bahwa aplikasi berjalan di Windows 2000 Server atau server yang lebih baru, seperti Windows Server 2003 atau Windows Server 2008.
#include <windows.h>
#include <stdio.h>
BOOL Is_Win_Server()
{
OSVERSIONINFOEX osvi;
DWORDLONG dwlConditionMask = 0;
int op=VER_GREATER_EQUAL;
// Initialize the OSVERSIONINFOEX structure.
ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
osvi.dwMajorVersion = 5;
osvi.dwMinorVersion = 0;
osvi.wServicePackMajor = 0;
osvi.wServicePackMinor = 0;
osvi.wProductType = VER_NT_SERVER;
// Initialize the condition mask.
VER_SET_CONDITION( dwlConditionMask, VER_MAJORVERSION, op );
VER_SET_CONDITION( dwlConditionMask, VER_MINORVERSION, op );
VER_SET_CONDITION( dwlConditionMask, VER_SERVICEPACKMAJOR, op );
VER_SET_CONDITION( dwlConditionMask, VER_SERVICEPACKMINOR, op );
VER_SET_CONDITION( dwlConditionMask, VER_PRODUCT_TYPE, VER_EQUAL );
// Perform the test.
return VerifyVersionInfo(
&osvi,
VER_MAJORVERSION | VER_MINORVERSION |
VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR |
VER_PRODUCT_TYPE,
dwlConditionMask);
}
void main()
{
if(Is_Win_Server())
printf("The system meets the requirements.\n");
else printf("The system does not meet the requirements.\n");
}