代码之家  ›  专栏  ›  技术社区  ›  Greg Dean

通过安装程序将应用程序注册到URL协议(所有浏览器)

  •  5
  • Greg Dean  · 技术社区  · 17 年前

    我知道只要使用IE/firefox,通过简单的注册表更改就可以实现这一点。然而,我想知道是否有一种可靠的方法可以为其他浏览器做到这一点,

    我专门在寻找一种通过安装程序来实现这一点的方法,因此在特定浏览器中编辑首选项不会造成问题。

    3 回复  |  直到 15 年前
        1
  •  5
  •   Greg Dean    17 年前

    以下是我能想到的最好的:

    IE浏览器 : http://msdn.microsoft.com/en-us/library/aa767914(VS.85).aspx

    火狐 : http://kb.mozillazine.org/Register_protocol

    :由于中的其他浏览器似乎都支持相同的约定,我创建了一个 bug 铬。

    歌剧 :我找不到任何文档,但它似乎遵循与IE/Firefox相同的方法(见上面的链接)

    游猎 跟歌剧一样,它也行得通,但我找不到任何关于它的文档

        2
  •  3
  •   hakre    17 年前
        3
  •  3
  •   ka3yc    8 年前

    如果有人看起来像是一个内联网网站的解决方案(适用于所有浏览器,而不仅仅是IE),其中包含指向共享服务器文件夹的超链接(就像我的例子一样),这是一个可能的解决方案:

    1. register protocol (URI scheme) 通过注册表(我想这可以为所有公司用户完成)。例如,“myfile:”方案。(感谢Greg Dean的回答)
    2. 超链接href属性应该如下所示

      <a href='myfile:\\mysharedserver\sharedfolder\' target='_self'>Shared server</a>
      
    3. 编写一个控制台应用程序,将参数重定向到windows资源管理器(有关此类应用程序的示例,请参阅步骤1)

    这是我的测试应用程序的一部分:

    const string prefix = "myfile:";
    
    static string ProcessInput(string s)
    {
        // TODO Verify and validate the input 
        // string as appropriate for your application.
        if (s.StartsWith(prefix))
            s = s.Substring(prefix.Length);
    
        s = System.Net.WebUtility.UrlDecode(s);
    
        Process.Start("explorer", s);
    
        return s;
    }
    

    我认为你的管理员可以很容易地为所有内联网用户安装这个应用程序:)

    如果没有这个单独的应用程序,我无法在资源管理器中设置打开此类链接的方案设置。