C#注册URL协议,使用浏览器打开本地程序,类似网页上点了QQ交谈打开本地QQ客户端程序

本教程适用于Windows系统

从浏览器上打开本地程序,主要用到了本地URL协议,其实主要就是改注册表

先建立一个项目,我建的是控制台项目

在Program.cs写2个静态方法用来添加注册表、移除注册表(用浏览器打开程序主要就是靠这两个方法)

        /// <summary>
        /// 注册启动项到注册表
        /// </summary>
        public static void Reg()
        {
            //注册的协议头,即在地址栏中的路径 如QQ的:tencent://xxxxx/xxx 我注册的是jun 在地址栏中输入:jun:// 就能打开本程序
            var surekamKey = Microsoft.Win32.Registry.ClassesRoot.CreateSubKey("jun");
            //以下这些参数都是固定的,不需要更改,直接复制过去
            var shellKey = surekamKey.CreateSubKey("shell");
            var openKey = shellKey.CreateSubKey("open");
            var commandKey = openKey.CreateSubKey("command");
            surekamKey.SetValue("URL Protocol", "");
            //这里可执行文件取当前程序全路径,可根据需要修改
            var exePath = Process.GetCurrentProcess().MainModule.FileName;
            commandKey.SetValue("", "\"" + exePath + "\"" + " \"%1\"");
        }
  /// <summary>
        /// 取消注册
        /// </summary>
        public static void UnReg()
        {
            //直接删除节点
            Microsoft.Win32.Registry.ClassesRoot.DeleteSubKeyTree("jun");
        }

然后再Main方法里加入一些逻辑来调用这两个方法

 static void Main(string[] args)
        {
            Console.WriteLine("输入: 1注册协议  2卸载协议");
            if (Console.ReadLine() == "1")
                Reg();
            else
                UnReg();
        }

然后编译,调试一下,运行程序输入1,敲回车,程序秒退,这说明已经成功了,先进入注册表看看有没有添加成功

打开注册表(运行:regedit):HKEY_CLASSES_ROOT\jun

可以看到注册表项已经添加成功,接下来就测试一下能否正常使用:

如果你注册的协议是jun的话,点这里就可以打开你的程序了

否则那就在浏览器地址栏中输入:协议名://  如: jun:// 敲回车即可(很多浏览器不能直接输入,要用a标签跳转,IE是可以直接输入的,建议使用IE测试)

从浏览器打开程序已经实现了,那么参数呢,如何传参,其实也蛮简单的,接下来我们在Main方法里取到参数(通过args):

将Main方法改为:

 static void Main(string[] args)
        {
            if (args.Length > 0)
            {
                Console.WriteLine(args[0]);
            }
            Console.WriteLine("输入: 1注册协议  2卸载协议");
            if (Console.ReadLine() == "1")
                Reg();
            else
                UnReg();
        }

编译后再浏览器输入:协议名://hello,world

如果你注册的协议是jun的话,点这里就可以打开你的程序了

结果如下图:

以上就是获取的参数,可以通过拆分字符串得到想到的结果

卸载我们就不测试了,方法已提供,直接删除注册表就行

源码下载

时间: 2024-10-14 04:26:27

C#注册URL协议,使用浏览器打开本地程序,类似网页上点了QQ交谈打开本地QQ客户端程序的相关文章

IIS上部署MVC网站,打开后ExtensionlessUrlHandler-4.0

IIS上部署MVC网站,打开后ExtensionlessUrlHandler-Integrated-4.0解决方法IIS上部署MVC网站,打开后500错误 IS上部署MVC网站,打开后ExtensionlessUrlHandler-Integrated-4.0解决方法 IIS上部署MVC网站,打开后500错误:处理程序“ExtensionlessUrlHandler-Integrated-4.0”在其模块列表中有一个错误模块“ManagedPipelineHandler” 解决方法如下: 以管理

(转)通过自定义URL协议在Web中启动本地应用程序

通过自定义URL协议在Web中启动本地应用程序 1.注册应用程序来处理自定义协议 你必须添加一个新的key以及相关的value到HKEY_CLASSES_ROOT中,来使应用程序可以处理特殊的URL协议. 新注册的key必须与协议scheme相匹配才可以被添加.例如,增加一个“alert:”协议,被增加到HKEY_CLASSES_ROOT的key必须是alert.在这个新的key之下,默认的字符串value将显示新协议的名字,并且URL协议字符串value将包含协议特有的信息或者空字符串.Key

web基础-web工作原理,http协议,浏览器缓存

1,web工作原理 2,http协议 3,浏览器缓存 4,cookie和session -------------------------------------------------------------------------------------------------------------------------------- 1,web工作原理 平时用浏览器,输入网址后回车,页面响应我们想要浏览的内容,简单操作的背后蕴涵了什么原理? 当输入url回车后,客户端(浏览器)会去请求

HTTP协议控制浏览器缓存HTTP协议控制浏览器缓存

HTTP协议控制浏览器缓存 2015.01.25 SilenceHurts 当我们浏览网站的图片时,按下F12监控,很容易就发现,当我们第一次浏览该图片时,浏览器返回的代码是200,即请求正常,此时,不懂任何东西,我们按下F5刷新页面,注意,我们会发现监控下的代码返回不再是200,而是现实304 Not Modifid,即未修改. 原因:第一次我们访问图片时,是正常的,而第二次访问时现实304,因为此时我们浏览器发现页面未发生更改,此时使用的是本地的缓存,而并非服务器返回的代码,加快了速度. 设

Xcode6.4注册URL Scheme步骤详解

URL Scheme的作用 我们都知道苹果手机中的APP都有一个沙盒,APP就是一个信息孤岛,相互是不可以进行通信的.但是iOS的APP可以注册自己的URL Scheme,URL Scheme是为方便app之间互相调用而设计的.我们可以通过系统的OpenURL来打开该app,并可以传递一些参数. 例如:你在Safari里输入www.alipay.com,就可以直接打开你的支付宝app,前提是你的手机装了支付宝.如果你没有装支付宝,应该显示的是支付宝下载界面,点击会跳到AppStore的支付宝下载

HTTP 无法注册 URL http://+:9999/CalculatorService/。进程不具有此命名空间的访问权限

转自:http://www.cnblogs.com/flyher/archive/2013/06/28/3161170.html 写WCF时在 1 host.Open(); 报错:HTTP 无法注册 URL http://+:9999/CalculatorService/.进程不具有此命名空间的访问权限(有关详细信息,请参见http://go.microsoft.com/fwlink/?LinkId=70353). 截图: 查询了相关资料,原来是权限不够,真笨啊,明明都提示了. 在Win7中用管

注册URL模式与HttpHandler的映射关系

注册URL模式与HttpHandler的映射关系 ASP.NET Core的路由是通过一个类型为RouterMiddleware的中间件来实现的.如果我们将最终处理HTTP请求的组件称为HttpHandler,那么RouterMiddleware中间件的意义在于实现请求路径与对应HttpHandler之间的映射关系.对于传递给RouterMiddleware中间件的每一个请求,它会通过分析请求URL的模式并选择并提取对应的HttpHandler来处理该请求.除此之外,请求的URL还会携带相应参数

Bootstrap做的HTML页面在本地IE打开正常,放到服务器上显示就不正常了

<meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> 浏览器默认开启兼容模式的问题,很多CSS3内容不支持,一般输入上面两行代码可以解决 作者:hu Hua链接:http://www.zhihu.com/question/24674452/answer/28658889来

VS中运行HTTP 无法注册URL

参考资料 http://www.java123.net/detail/view-449670.html http://www.cnblogs.com/jiewei915/archive/2010/06/21/1762066.html 问题现象 在开启服务时 host.Open(); 报异常:HTTP 无法注册URL http://+:9999/CalculatorService/.进程不具有此命名空间的访问权限(有关详细信息,请参见http://go.microsoft.com/fwlink/?