Check if Virtualization Based Security is enabled

/// <summary>
/// Checks if Virtualization Based Security (VBS) is enabled
/// </summary>
/// <returns>TRUE if enabled, FALSE otherwise</returns>
bool IsVbsEnabled() {
	HKEY  hKey;
	DWORD dwValue = 0;
	DWORD dwType = REG_DWORD;
	DWORD dwSize = sizeof(DWORD);
	bool isEnabled = false;
	// Open the registry key
	if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
		TEXT("SYSTEM\\CurrentControlSet\\Control\\DeviceGuard"),
		0,
		KEY_QUERY_VALUE,
		&hKey) == ERROR_SUCCESS) {
		if (RegQueryValueEx(hKey, TEXT("EnableVirtualizationBasedSecurity"), NULL, &dwType, (LPBYTE)&dwValue, &dwSize) == ERROR_SUCCESS) {
			if (dwValue == 1) {
				printf("Virtualization Based Security is enabled.\n");
				isEnabled = true;
			}
			else {
				printf("Virtualization Based Security is disabled.\n");
				isEnabled = false;
			}
		}
		else {
			printf("Couldn't read registry key, vbs must be disabled\n");
			isEnabled = false;
		}
		RegCloseKey(hKey);
	}
	else {
		printf("Error accessing registry key.\n");
		isEnabled = false;
	}
	return isEnabled;
}