我试图创建一个下拉菜单,显示当前登录到Windows的用户安装的程序。如果不是.Net,我可以从DLLImport dll获得它们吗?
46scxncf1#
在没有其他帮助的情况下,我自己发现可以使用C#中的Registry类来访问Windows注册表并检索当前用户的已安装程序列表。需要访问的注册表项是HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall,您可以通过迭代子项来获取已安装程序列表。下面是一个例子:
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类是实现此目的的更简单、更直接的方法。
1条答案
按热度按时间46scxncf1#
在没有其他帮助的情况下,我自己发现可以使用C#中的Registry类来访问Windows注册表并检索当前用户的已安装程序列表。需要访问的注册表项是
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
,您可以通过迭代子项来获取已安装程序列表。下面是一个例子:
现在installedPrograms列表可以用来填充任何下拉菜单的项目。
关于第二个问题,可以使用DllImport从适当的DLL导入本机函数,然后使用导入的函数检索已安装程序的列表。然而,使用Registry类是实现此目的的更简单、更直接的方法。