如何检测一个特定的软件是否安装在Windows中?

我是编程新手。 我有一个虚拟的会议网站。 现在我需要修改网站。

用户login会议网站时,必须检测自己的系统是否安装了特定的软件(该软件用于进行video通话,使用ActiveX对象)。

哪种方法可以检测系统中已安装软件的存在? (坦率地说,我甚至不知道哪种语言最能达到目的)

Solutions Collecting From Web of "如何检测一个特定的软件是否安装在Windows中?"

public static bool IsApplictionInstalled(string p_name) { string keyName; // search in: CurrentUser keyName = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"; if (ExistsInSubKey(Registry.CurrentUser, keyName, "DisplayName", p_name) == true) { return true; } // search in: LocalMachine_32 keyName = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"; if (ExistsInSubKey(Registry.LocalMachine, keyName, "DisplayName", p_name) == true) { return true; } // search in: LocalMachine_64 keyName = @"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall"; if (ExistsInSubKey(Registry.LocalMachine, keyName, "DisplayName", p_name) == true) { return true; } return false; } private static bool ExistsInSubKey(RegistryKey p_root, string p_subKeyName, string p_attributeName, string p_name) { RegistryKey subkey; string displayName; using (RegistryKey key = p_root.OpenSubKey(p_subKeyName)) { if (key != null) { foreach (string kn in key.GetSubKeyNames()) { using (subkey = key.OpenSubKey(kn)) { displayName = subkey.GetValue(p_attributeName) as string; if (p_name.Equals(displayName, StringComparison.OrdinalIgnoreCase) == true) { return true; } } } } } return false; } 

由于您无法访问系统,因此无法检测到这一点。 您的网络应用程序应该简单地尝试创建该ActiveX的实例,并显示一条消息,如果失败的用户。

感谢大家。 但我在C#中使用这个程序。 我创建了这个类库,在网页中加载了dll并使用IsApplicationInstalled方法。

 public static bool IsApplicationInstalled(string p_name) { string displayName; RegistryKey key; // search in: CurrentUser key = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"); foreach (String keyName in key.GetSubKeyNames()) { RegistryKey subkey = key.OpenSubKey(keyName); displayName = subkey.GetValue("DisplayName") as string; if (p_name.Equals(displayName, StringComparison.OrdinalIgnoreCase) == true) { return true; } } // search in: LocalMachine_32 key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"); foreach (String keyName in key.GetSubKeyNames()) { RegistryKey subkey = key.OpenSubKey(keyName); displayName = subkey.GetValue("DisplayName") as string; if (p_name.Equals(displayName, StringComparison.OrdinalIgnoreCase) == true) { return true; } } // search in: LocalMachine_64 key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall"); foreach (String keyName in key.GetSubKeyNames()) { RegistryKey subkey = key.OpenSubKey(keyName); displayName = subkey.GetValue("DisplayName") as string; if (p_name.Equals(displayName, StringComparison.OrdinalIgnoreCase) == true) { return true; } } // NOT FOUND return false; 

}