EDIT
As cereberus noted, the best way would be to set your hyperviser so that it can install Win 11 in a supported configarion, if you hardware allows for this. Since you mentioned a registry hack, I was assuming that you do not meet requirements, but if you do, then cereberus suggestion would be better to follow than my hack below.
END EDIT
The following assumes a clean install of Windows (booting from the ISO image for installation in a VM).
Modify your Windows ISO image that you are using to install Windows by adding a single file (details below) to it. As an alternative, create a brand new ISO image with only that one file in the root of the ISO image.
If you modify your Windows ISO that is all that is necessary, no other action is required. If you create a separate ISO image, make sure to attach it as a second ISO image to your VM before you start installation.
How this works:
The file is named "autounattend.xml". Windows setup looks for a file by this name when it starts and would normally use this file to automate the installation of Windows. The file that I provide below does NOT automate the installation of Windows. The only thing that it does is set registry entries in WinPE (used by setup) to bypass the check for TPM, Secure Boot, supported CPU, memory and storage requirements. Note that this only effects the WinPE registry loaded in RAM and will not affect the Win 11 registry at all. Other than that change, you would still install Windows exactly the same as always.
Save the data below to a file named "autounattend.xml" and use it as was described above:
Code:
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<settings pass="windowsPE">
<component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RunSynchronous>
<RunSynchronousCommand wcm:action="add">
<Order>1</Order>
<Path>reg add HKLM\System\Setup\LabConfig /v BypassTPMCheck /t reg_dword /d 0x00000001 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>2</Order>
<Path>reg add HKLM\System\Setup\LabConfig /v BypassSecureBootCheck /t reg_dword /d 0x00000001 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>3</Order>
<Path>reg add HKLM\System\Setup\LabConfig /v BypassRAMCheck /t reg_dword /d 0x00000001 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>5</Order>
<Path>reg add HKLM\System\Setup\LabConfig /v BypassCPUCheck /t reg_dword /d 0x00000001 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>4</Order>
<Path>reg add HKLM\System\Setup\LabConfig /v BypassStorageCheck /t reg_dword /d 0x00000001 /f</Path>
</RunSynchronousCommand>
</RunSynchronous>
</component>
</settings>
</unattend>