powershell — Получить ключ реестра установленных программ Stack Overflow

Я хочу получить список моих установленных программ.

Я знаю, как это работает с powershell: Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize .

Но я хочу это с php. Теперь у меня есть это:

<?php
$Wshshell= new COM('WScript.Shell');
$data = $Wshshell->regRead('HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall');

?>

Я получаю эту ошибку: Источник: WshShell.RegRead
Описание: Невозможно открыть ключ реестра «HKEY_LOCAL_MACHINE \ Software \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall» для чтения

0

Решение

Вот проект, который позволяет PHP получить и динамически взаимодействовать с реальным Powershell. Получи это здесь: https://github.com/merlinthemagic/MTS

После загрузки вы просто используете следующий код:

$shellObj    = \MTS\Factories::getDevices()->getLocalHost()->getShell('powershell');

$strCmd   = 'Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate';

$return1  = $shellObj->exeCmd($strCmd);

echo $return1;// list of all programs

Вы можете использовать любую команду, которая вам нравится, в отношении $ shellObj, среда поддерживается в течение всего срока действия сценария PHP.

0

Другие решения

в PowerShell вы можете прочитать ключ реестра, как это

Get-ItemProperty "hklm:\software\microsoft\windows\currentversion\uninstall\windows media player"
0

Это может решить вашу проблему:

$Wshshell = new COM('WScript.Shell');
$data = $Wshshell->regRead('HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\');

echo "result: " . $data;

Вы делаете правильно, но вы ищете ключи / значения в текущей выбранной папке, просто добавьте косую черту, чтобы получить подпапки.

Если вы проверите реестр, в папке «Uninstall» нет ключей, но должны быть подпапки.

0
По вопросам рекламы [email protected]