Detect if transaction request for a certain database Query has come from a Virtual Machine? The application is deployed on different systems but I have to restrict the application to get run on VMs. Provided that I need not to formulate the strategy in code to detect it. Is there any way I can figure out at Database level if the transaction request is from VM to restrict application use?  

Hint: I was googling and came across Logon Triggers. But I'm not sure if I could map this in my situation to figure out VM request!

Updated Actually the situation is: We have clients not paying their dues and still using our application illegally. We have built up the mechanism to restrict them on code level. But that mechanism,unfortunately, has been just merged in the code. The client could easily delude us by running old copy of our application on VM and they are good to go. We could have restricted them implementing firewall rules but they have their own network team. We are just taking protective measures to minimize such breaches at maximum.
There is no specific, built-in, method for determining if a client connection is coming from a virtual machine.  You'll need to identify the client connections via some other method, such as the name of the client machine.  

For instance, if the VMs are named like "VM01", "VM02", etc, you could use a server-level logon trigger to deny connections from machines not named like "VM%".   Be aware, if the logon trigger doesn't work correctly you run the risk of preventing all client connections.  If the trigger doesn't accept connections from the server machine, SQL Server Agent won't be able to connect.  In short, there are a lot of "gotchas" using a logon trigger.