Unless you use some unique piece of information from the computer that your software was installed on and send it out to some place on the 'Net to store it with along with the start date for the evaluation, there is *absolutely* *nothing* that you can do that will stop a determined person from bypassing your evaluation time limit. Period. End of discussion. No "buts".
Understand, there is one sole single place that you can persist some information across reboots and installation/uninstallations of your application, and that's in the file system on a mounted volume. Many people would consider the registry as a second choice, but the registry itself is nominally a specialized type of file system stored in registry "hive" files in, you guessed it, the file system. Anything stored locally can be found in the file system can be found can be modified or deleted if you have sufficient privileges and/or permissions. So, nothing stored locally on the computer can be used in an absolutely secure manner to persist your installation date & time stamp to enforce an evaluation time limit.
With that said, the typical thing that is done is to examine the modified date of a file that was placed on the computer as part of your installation process; the creation date won't typically change during the installation process, but the modified date will definitely change. Another thing that is done is to write a registry value containing the installation date & time stamp. Deleting your app's files by uninstalling it and and re-installing it will defeat this methodology.
If you want to get just a little bit devious, lay down a "ReadMe.txt" file and then save the installation date & time stamp in a "named stream" on that file. If you don't know what a "named stream" is on a NTFS volume, Google is your friend, as is the tech support database of KB articles here in WinBatch world. However, deleting the file and re-installing your software will defeat this methodology.
Yet another thing that is commonly done is to write a value in the registry for your software that records the installation date. Savvy users are up-to-speed on this methodology and will easily defeat it.
As for the initial suggestion, obtain the BIOS UUID value for the computer. It is unique on a per-motherboard basis, although virtual machines can wreak a little havoc with duplicates or randomly generated values every time the VM is "power cycled". Then, send that BIOS UUID value to some central location on the 'Net and record the date & time stamp when you receive it. Since the pairing of "installation time" and "unique ID of the computer" are not stored on the computer, there's no way for anybody to bypass it short of doing some binary hacking of your application. WinBatch makes that an unpleasant & non-trivial task for a compiled script, but it's not impossible if somebody really really really really really really wants to break your evaluation time limit.