如何使用c#代码在系统中安装应用程序?

推荐答案

遍历注册表项"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"似乎可以给出已安装应用程序的完整列表.

除了下面的示例之外,您还可以找到与我所做的here个版本类似的版本.

这是一个粗略的例子,您可能想做一些事情来go 除空白行,如提供的第二个链接中所示.

string registry_key = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
using(Microsoft.Win32.RegistryKey key = Registry.LocalMachine.OpenSubKey(registry_key))
{
    foreach(string subkey_name in key.GetSubKeyNames())
    {
        using(RegistryKey subkey = key.OpenSubKey(subkey_name))
        {
            Console.WriteLine(subkey.GetValue("DisplayName"));
        }
    }
}

或者,您也可以使用WMI,如前所述:

ManagementObjectSearcher mos = new ManagementObjectSearcher("SELECT * FROM Win32_Product");
foreach(ManagementObject mo in mos.Get())
{
    Console.WriteLine(mo["Name"]);
}

但这执行起来相当慢,我听说它可能只列出在"ALLUSERS"下安装的程序,尽管这可能是不正确的.它还忽略了Windows组件&;更新,这可能对你很方便.

.net相关问答推荐

为什么在WinForm应用程序中创建组件类椭圆会在www.example.com中没有响应

与 Datagrid 的 SelectedItem 链接时的 WPF RadioButton 绑定问题

是否必须使用 Visual Studio 预览才能使用 MAUI?

使用 Task.WhenAll 但需要跟踪每个单独的 Task 的成功

使用 Thread.Abort() 有什么问题

value 的默认参数必须是编译时间常数?

.Include() 与 .Load() 在 EntityFramework 中的性能

如何中止任务,如中止线程(Thread.Abort 方法)?

将 int 转换为 .NET 中的位数组

为什么我得到 411 Length required 错误?

extern 在 C# 中是如何工作的?

如何在 C# 中序列化异常对象?

在 C# 中将字符串转换为十六进制字符串

为什么使用 ImmutableList 而不是 ReadOnlyCollection?

List 和 IEnumerable 的实际区别

有没有办法从方法返回匿名类型?

自创建数据库以来,支持ApplicationDbContext上下文的模型已更改

了解 C# 中的协变和逆变接口

.NET 委托类型的正确命名约定?

IronPython 与 Python .NET