Как получить список установленных приложений на Windows 10 из Java
Я пытаюсь получить список всех приложений, установленных в Windows 10 из моей программы Java. Я пробовал следующее:
Runtime.getRuntime().exec("Get-WmiObject -class Win32_Product | Select-Object -Property Name");
и я получаю:
Cannot run program "Get-WmiObject": CreateProcess error=2
Я тоже попробовал:
Process p = Runtime.getRuntime().exec("Get-ItemProperty HKLM:\\Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize");
С похожим результатом.
Наконец, я попытался использовать библиотеку "win32", но она возвращает только название некоторых установленных программ.
Мне нужен тот же результат, который я получаю при выполнении в powershell следующей команды:
Get-ItemProperty HKLM: \ Software \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ * | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize
Я искал другие вопросы в stackru, но ни один из них не дал мне решения. Мне нужно искать в каждом дисковом блоке (и не только в C:). Кто-то может подсказать мне возможное решение?
Благодарю.
1 ответ
Вы не можете запускать команды PowerShell напрямую, вы должны запускать их через процесс PowerShell:
powershell -command "PowerShell commands with parameters"
Так что измените ваш exec вызов, как это:
Process p = Runtime.getRuntime().exec("powershell -command \"Get-ItemProperty HKLM:\\Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize\"");