Looking for ideas on how to detect when our Windows application is running in one of the following VM environments. Some starter ideas for detection are in parentheses. There may be (much) better detection techniques - the starter ideas I've come up with are based on my Google research.
VMWare (looking for the presence of optional VMware Tools is one way)
Microsoft Virtual PC (have a device named "Virtual HD" for their IDE disks, "MS Virtual SCSI Disk Device" for their SCSI disks)
Citrix Xen
Sun Virtual Box
Thank you, Malcolm
See BluePill which the author claimed as undetectable, causing a large negative response from the security community that quickly developed several ways to determine if you are in a VM. The best of which seem to be based on timing.