Я пытаюсь получить серийный номер BIOS в PHP, который будет сохранен как exe-файл через Exeoutput. Поскольку я не смог получить серийный номер в exeoutput, но получал его в браузере, я пришел к выводу, что php-файлы работают в виртуальном каталоге, поэтому они не могут получить доступ к оборудованию. Я также получил предложение, чтобы я использовал VBScript, чтобы получить серийный номер BIOS и передать его обратно в php. Мой VBScript, как показано ниже:
On Error Resume Next
Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20
arrComputers = Array(".")
For Each strComputer In arrComputers
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystemProduct", "WQL", _
wbemFlagReturnImmediately + wbemFlagForwardOnly)
For Each objItem In colItems
WScript.Echo objItem.IdentifyingNumber
Next
Next
Вызывающий код php ниже:
$WshShell = new COM("WScript.Shell");
$obj = $WshShell->Run("cscript mbs.vbs", 0, true);
var_dump($obj);
При выполнении vbs из командной строки я получаю серийный номер, но при попытке заставить его работать через php, я получаю только
INT (1)
напечатано на веб-странице.
Задача ещё не решена.
Других решений пока нет …