目的:由于之前做的通过activex在IE中加载exe程序,由于种种原因,在二期项目中放弃了使用此方法,我们通过使用网页点击按钮打开程序的方法,由于外部程序无法通过登录获得seesion,我们只能通过浏览器登录,然后点击启动按钮的时候传递session信息.(迅雷,qq 等也是使用这种方法网页启动客户端),这种方法叫 注册表URL Protocol?
URL Protocol?协议
- 由于这个协议是事先在注册表中写好的
- 我们只能通过网页启动程序,不能事先运行我们的unity程序
基于这两点,我做了一个安装程序将写入注册表的信息在安装的时候,先写入.
官网上介绍 此协议的结构如下
1 2 3 4 5 6 7 8 9 10 |
HKEY_CLASSES_ROOT alert (Default) = "URL:Alert Protocol" URL Protocol = "" DefaultIcon (Default) = "alert.exe,1" shell open command (Default) = "C:\Program Files\Alert\alert.exe" "%1" |

通过查看迅雷的注册表
导出其中一个reg文件,结构如下
1 2 3 4 5 6 7 8 9 10 11 |
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\ed2k] "URL Protocol"="" [HKEY_CLASSES_ROOT\ed2k\Shell] [HKEY_CLASSES_ROOT\ed2k\Shell\Open] [HKEY_CLASSES_ROOT\ed2k\Shell\Open\command] @="\"F:\\Thunder\\Program\\ThunderNewTask.exe\" \"%1\"" |
通过修改上面的注册表,替换自己的程序 和文件名, 我们传递的seesion 就是通过%1 参数传递的.
网页上如下:
1 |
<a href="thunder://传递的信息">注册表协议</a> |

制作安装程序
我们使用Advanced Installer,将reg导入到advanced installer中.

安装和测试
通过安装程序,将注册协议写入注册表
我们在浏览器中输入我们自己的协议,这里用迅雷的 比如 thunder:// 或 ed2k:// ,如果打开了迅雷程序则表示成功. 这样我们就可以通过客户端和服务器进行交互.
转载请注明:veyvin » 实现web传递session到程序