Comment faire pour déterminer si la virtualisation matérielle est disponible via le code? (C#, C++)
Comment puis-je détecter si un système prend en charge la virtualisation matérielle via le code?
(De préférence en C# ou C++).
J'ai essayé à l'aide de WMI et ManagementObjectSearcher, et ne pouvait pas trouver une propriété qui semblait représenter si la prise en charge était présent ou pas dans la machine.
Question Bonus:
Est-il possible de dire si le PROCESSEUR prend en charge MATÉRIELLE à la virtualisation, mais désactivé dans le BIOS?
OriginalL'auteur Raj Rao | 2009-05-08
Vous devez vous connecter pour publier un commentaire.
Je pense que l'affiche originale est de demander comment faire pour détecter le matériel de l'ordinateur prend en charge la virtualisation, non pas qu'il est en cours d'exécution à l'intérieur d'une machine virtuelle. Voir cette question pour une réponse possible.
Aussi, il pourrait être intéressant de voir si vous pouvez vérifier les CPU drapeaux, comme il y aura soit le processeur Intel
vmx
drapeau ou de l'AMDsvm
drapeau si le processeur prend en charge les extensions de virtualisation. Je ne peux pas dire que je sais comment cela doit être fait sous Windows, mais l'information est disponible dans/proc/cpuinfo
sur Linux.OriginalL'auteur DMI
Je n'ai pas de C-ish réponse, mais voici une PowerShell approche, c'est juste un simple requête WMI -- qui peuvent les aider.
Requête Win32_Processor; il y a les drapeaux "SecondLevelAddressTranslationExtensions" et "VirtualizationFirmwareEnabled." Ils semblent répondre aux questions pour moi.
Dans le Chic, c'est
(GWMI Win32_Processor).VirtualizationFirmwareEnabled
et
(GWMI Win32_Processor).SecondLevelAddressTranslationExtensions
J'espère que cette aide.
Marque Minasi
OriginalL'auteur Mark Minasi
Vous ne savez pas le code, mais Sécurisable semble être capable de faire cela.
OriginalL'auteur Slipfish
Cochez cette lien, comme vous pouvez le voir il y a, peut-être que vous devriez utiliser des classes WMI pour obtenir des informations. .NET framework a Système.La gestion de l'espace de noms pour le faire. Classe Win32_processor peut vous donner toutes les infos dont vous avez besoin sur le processeur, car vous ne pouvez pas accéder à la cpu de drapeaux directement à l'aide de classe win32_processor, peut-être vous avez besoin pour vérifier la valeur de VirtualizationFirmwareEnabled
OriginalL'auteur Kellerman Rivero
vérifier StackOverFlow: Comment identifier que vous êtes en cours d'exécution en vertu d'une VM
OriginalL'auteur gvlx