就不说那么多废话了,起初我发现powershell可以获取到计算机中程序的所有安装得软件名称和ID,获取这些信息的命令如下:
Get-StartApps
但是发现有些信息可能会因为太长而显示不全,最后的字符会显示成'...',这是我们在powershell命令后面加上一个参数’|format-list‘,这样就能够正常的显示,命令如下:
Get-StartApps |format-list
我在程序中想要获取这些信息,就只能使用程序去运行这个命令。这里有两个思路:1.通过通信管道,执行cmd命令,获取返回的输出信息;2,通过将信息保存下来,然后再去读取保存的文件来获取对应的信息。
我采用的第二种方法:
注:自己编译的程序一般是32位的程序,打开的powershell也就是32位的,但是32位的有的命令不支持,所以这里调起powershell需要注意,应该带上路径去调用powershell:
%SystemRoot%\sysnative\WindowsPowerShell\v1.0\powershell.exe
PowerShell -Command "& {Get-StartApps |format-list}"
我这里使用的是 winexec的方式调用的 所以最后的代码如下:
winexec('cmd.exe /c %SystemRoot%\sysnative\WindowsPowerShell\v1.0\powershell.exe -Command "& {Get-StartApps |format-list}" -t > %Temp%\StartApps.txt',SW_HIDE);