2016-09-27 2 views
0

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

Я знаю, как он работает с 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

Наверное, не проблема, основанная на ошибке, но попробуйте использовать двойную обратную косую черту. Например, «HKEY_LOCAL_MACHINE \\ Software \\ ...». – pmahomme

+0

У меня есть это: $ Wshshell = new COM ('WScript.Shell'); $ data = $ Wshshell-> regRead ('HKEY_LOCAL_MACHINE \\ Software \ \ Wow6432Node \\ Microsoft \\ Windows \\ CurrentVersion \\ Uninstall \\ '); echo ($ data); он работает, но ничего не печатает – jurh

+0

Итак, ошибка исчезла, но вы не видите значения в ' – pmahomme

ответ

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

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

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

echo "result: " . $data; 

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

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

+0

Я хочу получить Отображаемое имя всех подпапок в удалить папку – jurh

0

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

Get-ItemProperty "hklm:\software\microsoft\windows\currentversion\uninstall\windows media player" 
Смежные вопросы