existem questões similares no stackoverflow que cobrem principalmente como detectar que você está rodando dentro de um vm:
Então, detectar que você está dentro de uma VM é principalmente uma questão de:
- acionando algum código que se comporta de maneira um pouco diferente quando executado em uma cpu "real"
- verificando os ids de hardware dos dispositivos virtuais (por exemplo, o id de hardware da 'placa de rede' é conhecido. se o programa achar que 'sabe', ele é executado dentro de uma vm)
para responder à sua pergunta: acho que é sempre possível detectar que você está dentro de uma máquina virtual. então, você tem que usar outro programa ou descobrir, porque o PPS não quer ser iniciado dentro de um vm (talvez algum 'hardware' esteja faltando).