📅  最后修改于: 2023-12-03 14:50:51.938000             🧑  作者: Mango
在 C# 中使用 Shell-Bash 脚本可以轻易地获取 Windows 操作系统中所有已安装的应用程序列表。这样的应用程序列表可以被用于各种目的,比如将应用程序在 Windows 中进行排序、筛选、升级、卸载等操作。
以下是获取所有已安装应用程序的方法:
在 C# 项目的 Main
方法中,创建一个 Process
对象,用于执行 Shell-Bash 脚本命令。
Process p = new Process();
p.StartInfo.FileName = "powershell";
p.StartInfo.Arguments = "Get-ItemProperty HKLM:\\Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\* | Select-Object DisplayName, DisplayVersion, Publisher | Format-Table –AutoSize";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.Start();
上面这段代码创建了一个 Process
对象,它的 FileName
属性被设置为 "powershell"
,这是因为执行 Shell-Bash 脚本需要使用 PowerShell 命令行。Arguments
属性被设置为一个 Shell-Bash 脚本命令,这个命令可以获取所有已安装的应用程序,并将它们的 DisplayName
、DisplayVersion
、Publisher
等信息输出到控制台。UseShellExecute
属性被设置为 false
,这意味着启动进程时不使用操作系统外壳程序(shell),也就是说不使用 cmd.exe;RedirectStandardOutput
属性被设置为 true
,这意味着启动进程时重定向输入、输出流,以便在 .NET Framework 程序中获取输出结果。
接着,使用 StreamReader
从 p.StandardOutput
流中读取输出内容,并将每行输出都存储到 List<string>
对象中。
List<string> lines = new List<string>();
while (!p.StandardOutput.EndOfStream)
{
lines.Add(p.StandardOutput.ReadLine());
}
上面这段代码创建了一个 List<string>
对象,用于存储从 p.StandardOutput
流中读取的所有输出行。使用 StandardOutput
流读取输出行的方式与读取文件流类似,可以使用 EndOfStream
属性检测是否读完,再使用 ReadLine
方法读取每行内容。
最后,将 List<string>
对象中的所有输出行输出到控制台即可。
foreach (string line in lines)
{
Console.WriteLine(line);
}
以下是获取所有已安装应用程序的完整代码示例:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
class Program
{
static void Main(string[] args)
{
Process p = new Process();
p.StartInfo.FileName = "powershell";
p.StartInfo.Arguments = "Get-ItemProperty HKLM:\\Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\* | Select-Object DisplayName, DisplayVersion, Publisher | Format-Table –AutoSize";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.Start();
List<string> lines = new List<string>();
while (!p.StandardOutput.EndOfStream)
{
lines.Add(p.StandardOutput.ReadLine());
}
foreach (string line in lines)
{
Console.WriteLine(line);
}
}
}
上面这段代码将所有输出行输出到控制台。如果你需要将它们存储在某个文件或内存流中,可以根据需求进行修改。
总之,在 C# 中使用 Shell-Bash 脚本可以帮助我们获取 Windows 中所有已安装的应用程序列表,这是个非常方便的工具。