Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用C#为新手检查已安装的浏览器_C#_.net_Browser - Fatal编程技术网

如何使用C#为新手检查已安装的浏览器

如何使用C#为新手检查已安装的浏览器,c#,.net,browser,C#,.net,Browser,我正在构建一个应用程序,这是一个简单的应用程序,我想要它做的就是用简单的英语显示操作系统信息和架构,并检查是否安装了浏览器,然后我将添加删除cookie的功能,等等 我粘在上面的是浏览器检测部分。有人能给我指一些像样的教程或指南吗?谢谢 编辑:好的,我终于用下面hcb提供的代码片段和其他人的评论划出了一些工作代码(谢谢大家)。到目前为止,它正在做我想做的事情,所以我想我可以为那些试图做同样事情的人分享我所拥有的: RegistryKey browserKeys; browser

我正在构建一个应用程序,这是一个简单的应用程序,我想要它做的就是用简单的英语显示操作系统信息和架构,并检查是否安装了浏览器,然后我将添加删除cookie的功能,等等

我粘在上面的是浏览器检测部分。有人能给我指一些像样的教程或指南吗?谢谢

编辑:好的,我终于用下面hcb提供的代码片段和其他人的评论划出了一些工作代码(谢谢大家)。到目前为止,它正在做我想做的事情,所以我想我可以为那些试图做同样事情的人分享我所拥有的:

RegistryKey browserKeys;

        browserKeys = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\WOW6432Node\Clients\StartMenuInternet");

        if (browserKeys == null)
        {
            browserKeys = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Clients\StartMenuInternet");
        }

        string[] browserNames = browserKeys.GetSubKeyNames();

        foreach (string browser in browserNames)
        {
            using (RegistryKey tempKey = browserKeys.OpenSubKey(browser))
            {
                foreach (string keyName in tempKey.GetValueNames())
                {
                    if (tempKey.GetValue(keyName).ToString() == "Internet Explorer")
                    {
                        internetExplorerButton.Enabled = true;
                        internetExplorerButton.BackgroundImage = Properties.Resources.iExplorer;

                        if (internetExplorerButton.Enabled == true)
                        {
                            Label ieLabel = new Label();
                            ieLabel.Text = "Found!";
                            explorerLable.Text = ieLabel.Text;
                        }
                    }
让我非常恼火的是,我注意到谷歌想在本地应用程序数据中安装他们的浏览器。我设法解决了这个问题,再次单独编写代码并检查:

Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Google\Update\Clients");
Edit2:检查Chrome的
CurrentUser
对于一些朋友来说似乎效果不错,所以它一定没问题。

像这样:

RegistryKey browserKeys;
//on 64bit the browsers are in a different location
browserKeys =   Registry.LocalMachine.OpenSubKey(@"SOFTWARE\WOW6432Node\Clients\StartMenuInternet");
if (browserKeys == null)
    browserKeys = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Clients\StartMenuInternet");

string[] browserNames = browserKeys.GetSubKeyNames();

重复问题的答案可能重复,这里有一个链接:我认为你不会比这更简单。我已经读过了,但我不明白他的“浏览器”类有什么用途。他的浏览器类包含什么?还有必要我也创建一个吗?他的
browser
类可能只是一个简单的类,具有与浏览器相关的属性。你可以用他使用的属性创建一个类来按原样使用他的代码,或者你可以只看他是如何获得值的,而不是看他是如何存储值的。请不要包括不专业的,你在这里的帖子中的粗话。检查该位置和检查HKEY\U LOCAL\U MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall有什么区别?除了显而易见的。这将列出所有已安装的程序(可以卸载),而不仅仅是浏览器。因此,您需要一个“已接受”的浏览器列表来进行匹配,可能会错过用户可能安装的浏览器。那么StartMenuInternet是严格意义上的浏览器吗?我懂了。所以browserKeys.GetSubKeyNames()接受这些名称并将它们存储在一个字符串数组中,我只是在数组中迭代寻找“firefox”之类的东西吗?我问这个问题的唯一原因是因为我需要一段时间来完善代码,我是一个完全的新手,所以在我得到它之前,这将是反复试验。谢谢。你可以在browserNames上加一个换行符,然后看看你在机器上看到的名字。谢谢大家的帮助,我来试试:)