Hi:
What you need is no problem, in 2 or 3 days you will have it ready. Here is my proposal:
Hardware license: One of the best alternatives, in my opinion, it's very safe. This is to generate the license from the serial number of components of the PC where the App will run, example: RAM, hard disk, motherboard, etc. plus other information to be included in the license generation.
Each time the App is executed, it will look for the license and check that it matches with the serial of the PC components. If they don't match it means that:
a) The executable was copied to another PC.
b) Someone changes some hardware component.
In order to generate the license, it is necessary to obtain/generate the "License request", which contains all the hardware information and will be executed from the PC where the App will be executed. Then, from the "License request", the license is generated.
Note that Microsoft has some technologies / tools for this purpose.
What is missing? You need define how you want to manage the licenses: manually, through the internet, through the App itself. Therefore, I propose that you contact me via chat to reach the best solution and reach a budget agreement.
I'm Daniel, the team leader of Dynamic Softworks. I'm a Fullstack .NET developer with over 10 years of experience in the software industry.
For any questions please feel free to contact me. I'm ready to provide any information, example or demo.
Best regards
Daniel (Dynamic Softworks)