Visual Studio 在上下文中列出所有已安装的程序< /MenuItem>

xmd2e60i  于 2023-01-31  发布在  其他
关注(0)|答案(1)|浏览(125)

我试图创建一个下拉菜单,显示当前登录到Windows的用户安装的程序。如果不是.Net,我可以从DLLImport dll获得它们吗?

  • edit:ListView项目作为列表< T >也可以是一个很好的选项,我只需要获得已安装程序的列表(并设置ListView作为上下文下拉菜单)。*
46scxncf

46scxncf1#

在没有其他帮助的情况下,我自己发现可以使用C#中的Registry类来访问Windows注册表并检索当前用户的已安装程序列表。需要访问的注册表项是HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall,您可以通过迭代子项来获取已安装程序列表。
下面是一个例子:

List<string> installedPrograms = new List<string>();
using (RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"))
{
    foreach (string subkeyName in key.GetSubKeyNames())
    {
        using (RegistryKey subkey = key.OpenSubKey(subkeyName))
        {
            if (subkey.GetValue("DisplayName") != null)
            {
                installedPrograms.Add(subkey.GetValue("DisplayName").ToString());
            }
        }
    }
}

现在installedPrograms列表可以用来填充任何下拉菜单的项目。
关于第二个问题,可以使用DllImport从适当的DLL导入本机函数,然后使用导入的函数检索已安装程序的列表。然而,使用Registry类是实现此目的的更简单、更直接的方法。

相关问题