📌  相关文章
📜  在 C# 中的 windows 中获取所有已安装的应用程序 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:50:51.938000             🧑  作者: Mango

在 C# 中的 Windows 中获取所有已安装的应用程序 - Shell-Bash

在 C# 中使用 Shell-Bash 脚本可以轻易地获取 Windows 操作系统中所有已安装的应用程序列表。这样的应用程序列表可以被用于各种目的,比如将应用程序在 Windows 中进行排序、筛选、升级、卸载等操作。

实现步骤

以下是获取所有已安装应用程序的方法:

  1. 在 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 脚本命令,这个命令可以获取所有已安装的应用程序,并将它们的 DisplayNameDisplayVersionPublisher 等信息输出到控制台。UseShellExecute 属性被设置为 false,这意味着启动进程时不使用操作系统外壳程序(shell),也就是说不使用 cmd.exe;RedirectStandardOutput 属性被设置为 true,这意味着启动进程时重定向输入、输出流,以便在 .NET Framework 程序中获取输出结果。

  2. 接着,使用 StreamReaderp.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 方法读取每行内容。

  3. 最后,将 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 中所有已安装的应用程序列表,这是个非常方便的工具。