2

私はこのコードを使用しようとしています:

public string GetCPUId()
{
    string cpuInfo = String.Empty;
    string temp = String.Empty;
    ManagementClass mc = new ManagementClass("Win32_Processor");
    ManagementObjectCollection moc = mc.GetInstances();
    foreach (ManagementObject mo in moc)
    {
        if (cpuInfo == String.Empty)
        {
            cpuInfo = mo.Properties["ProcessorId"].Value.ToString();
        }
    }
    return cpuInfo;
}

XP 仮想マシン (virtualbox) で hw uid を取得するには、次のようなメッセージ ボックスしか表示されません。

Object reference not set to an instance of an object.

それは仮想マシンだからですか、それとも何ですか?

4

3 に答える 3

7

はい、仮想マシンを実行しているためです。 mo.Properties["ProcessorId"]nullを返します。ここで答えを参照してください。

于 2011-02-24T19:13:53.570 に答える
3

ここでより高速なソリューションを見つけました: http://www.dotnetspark.com/kb/24-get-processor-id-using-c-sharp.aspx

両方のコードが同じライブラリを使用するため、仮想ウィンドウで動作します(Windows XPが仮想的にインストールされたVMware Workstation 7.0.0を使用)。プロジェクト出力にdllファイルを含めてみてください。

于 2011-10-26T11:43:33.973 に答える
0

これはVMでは問題なく機能するはずです。ただし、仮想CPUによって提示されるCPU IDは、物理CPUと一致する場合と一致しない場合があります。

于 2011-02-24T19:14:33.097 に答える