Url Protocol-从网页中打开应用程序(exe)-使用小记
2015-12-08 22:17
381 查看
项目有个需求,要从网页中打开一个桌面应用程序,故找到Url Protocol,上Code :
应用程序端:
但是这有个缺陷,就是要求每次移动后必须要打开一次程序才能确保注册表中的路径是正确的;
注:某些同学执行上面代码可能会提示权限不足,可参考:C#如何以管理员身份运行程序
网页端:
第一篇博客,希望自己持之以恒!
欢迎大家指正!
应用程序端:
/// <summary> /// 注册表名称,注意不能有特殊符号,包括下划线 /// </summary> private const string RegName = "WFA"; public void UpdateProtocol() { try { if (Registry.ClassesRoot.OpenSubKey(RegName) != null) { RegistryKey rg = Registry.ClassesRoot.OpenSubKey(RegName+"\\shell\\open\\command", true); string oldUrl = rg.GetValue("").ToString(), newUrl = string.Format("\"{0}\" \"%1\"", Application.ExecutablePath); if (!oldUrl.Equals(newUrl, StringComparison.CurrentCultureIgnoreCase)) { rg.SetValue("", newUrl); } } else { RegistryKey first = Registry.ClassesRoot.CreateSubKey(RegName); first.SetValue("", RegName+" Protocol"); first.SetValue("URL Protocol", ""); RegistryKey shell = first.CreateSubKey("shell"), open = shell.CreateSubKey("open"), cmd = open.CreateSubKey("command"); cmd.SetValue("", string.Format("\"{0}\" \"%1\"", Application.ExecutablePath)); } } catch (Exception ex) { throw new Exception("修改注册表信息失败,请尝试:使用将程序加入安全软件白名单、使用管理员方式启动", ex); } }之所以会有修改,因为我的应用程序是绿色版的,所以其路径可能是不固定的,这段代码加在Login页面,每当程序打开都会更新注册表中对应的路径,避免无法打开程序;
但是这有个缺陷,就是要求每次移动后必须要打开一次程序才能确保注册表中的路径是正确的;
注:某些同学执行上面代码可能会提示权限不足,可参考:C#如何以管理员身份运行程序
网页端:
<a href="WFA://str">打开程序并传递字符串str作为参数</a>网页端代码就简单了,一个A标签完事,但是后面的str可以做很多东西,如:免登陆(传递一个包含用户信息及过期时间之类的参数到应用程序端,应用程序端进行对应的解析,如果成功解析则直接通过登陆)
第一篇博客,希望自己持之以恒!
欢迎大家指正!
相关文章推荐
- 在eclipse中怎样给项目添加关联项目
- 单点登录SSO
- iOS技术面试02:内存管理
- 我与太极拳
- db2注意事项
- [数据结构][Leetcode]翻转二叉树
- maven 常用命令
- 连接本地Oracle 11g时 ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务
- POJ1363
- vc遍历网页表单并自动填写提交
- Scala 第十六讲 隐函数 从大数据菜鸟走上大师的历程 [此博文包含图片]
- arc如何破循环或交叉引用
- 单元测试(SpringMVC)
- html5新特性data_*自定义属性使用
- 纪念结婚一周年
- 安装与配置MyEclipse&Tomcat
- Java enum的用法详解
- mvn 工具的使用 忽略测试case
- 2015年12月8日记
- MFC类与对应的头文件