Получить количество ядер в 64-битной системе XP - PullRequest
1 голос
/ 29 июля 2011

Хей,

Я написал функцию, которая должна давать мне количество ядер системы Windows. Работает на всех системах кроме XP 64 bit. Вот как я получаю информацию:

$objWMIItems = $objWMIService.ExecQuery ("SELECT * FROM Win32_Processor")
If (0 == IsObj($objWMIItems)) Then
       ;~ errorhandling
Else
For $objElement In $objWMIItems
    $nCoreNumber = $objElement.NumberOfCores
Next

Относительно «NumberOfCores», на странице MSDN Microsoft указывается «Windows Server 2003, Windows XP и Windows 2000: это свойство недоступно». Где-то я читал, это возможно с установленным SP3. Я полагаю, что это правда, потому что это работает на XP 32-битных системах. Но нет SP3 для XP 64 ...

Есть ли другой способ получить информацию?

Спасибо

Ответы [ 2 ]

3 голосов
/ 29 июля 2011

Я думаю, что проще всего прочитать переменную среды NUMBER_OF_PROCESSORS.

0 голосов
/ 29 июля 2011

Вам нужны «ядра» или «количество логических процессоров, включая гиперпоточность»? (Другими словами, хотите ли вы считать гиперпоточность «ядром»)?

В любом случае, копируя мой ответ из аналогичного вопроса некоторое время назад:

Если вам действительно нужно различать реальные ядра, чипы и логические процессоры, API для вызова GetLogicalProcessInformation

GetSystemInfo если просто хотите узнать, сколько логических процессоров на машина (без дифференциации для гиперпоточности.).

...