社会的不断进步发展,分工也越来越细了.而我们工作接触的范围也越来越狭小了,但这不是倒退了,而是分工之细让人们在各个方面深耕细作。PCB企业软件系统发展路线同样也如此,随着我们PCB企业发展不断壮大,软件系统也在不断细分。目的只有一个,让专业的事情交给专业的系统去做。回想当初起公司用必有德ERP,一个ERP能搞定PCB所有业务,从前端销售管理(销售订单,合同评审,客户资料管理),再到制前工程(MI资料,ECN,开料,钻孔,排版) ,接着到生产管理(lot卡,投料,过数,MRB报废),再到品质管理(来料检查,入库检查,出库检查,提共大量统计报表,不良原因分析,IQC报表)等等。在当时确实是牛X的,但公司是向前不断发展, 业务也变得越来越复杂多变,必有德ERP无法支撑企业发展步伐啊,最终选择放弃了。必有德ERP的原功能模块被分解到各个新系统中去了。目前PCB企业管理系统被细分为9个系统:

OMS订单管理系统

EDS工程数据管理系统

APS高级计划排程系统

MES制造执行系统

文件网 标签打印系统

WMS仓储管理系统

TMS物流运输管理系统

ERP 企业资源管理系统

HCM人力资源管理系统

有这么多系统 ,每套系统都有自己独立的用户与权限管理,那问题就来了。假如:一个人如果拥有4个系统用户权限帐号,那么这个用户需要来来回回在4个系统都输入一次帐号密码。这样用户体验肯定是差的。 为了得到改善,OA系统发起单点登入项目,OA作为统一用户数据源,用户经过OA统一验证 ,达到登入OA系统后,通过OA系统能直接启动并进入其它系统主界面的目的。这里介绍CS架构(工程系统)实现单点登入方法,即用网页启对本地exe的方法。

一.在本机注册URLProtocol协议

1.手动注册表增加URLProtocol协议

可以运行regedit, 在HKEY_CLASSES_ROOT节点按下图操作:(EDS名称可以自己定)

1.增加协放名:EDS

2.默认值改为:URL: EDS Protocol Handler

3.增加名称:URL Protocol   数据值为:启动的exe路径

4.在command节点,默认数据改为:“启动的exe路径” + “%1”

2.代码方式增加URLProtocol协议

        /// <summary>/// 注册协议/// </summary>/// <param name="Root_Key">根节点</param>/// <param name="file_application_path">应用程序路径</param>/// <param name="file_application_ico">应用程序打开图标,可选值</param>/// <returns></returns>public bool RegeditAdd(string Root_Key, string file_application_path, string file_application_ico){RegistryKey reg_CurrentUser = Registry.CurrentUser;try{//获取注册表CurrentUser/SOFTWARE/Classes项RegistryKey reg_Classes = reg_CurrentUser.OpenSubKey("SOFTWARE", true).OpenSubKey("Classes", true);RegistryKey reg_key = reg_Classes.OpenSubKey(Root_Key, true);if (reg_key == null){RegistryKey reg_sjbs = reg_Classes.CreateSubKey(Root_Key);//添加默认项reg_sjbs.SetValue("", "URL: " + Root_Key + " Protocol Handler");//协议别名reg_sjbs.SetValue("URL Protocol", file_application_path);RegistryKey reg_DefaultIcon = reg_sjbs.CreateSubKey("DefaultIcon");if (!String.IsNullOrEmpty(file_application_ico) || file_application_ico == ""){//设置自定义图标reg_DefaultIcon.SetValue("", file_application_ico);}else{//设置系统定义图标reg_DefaultIcon.SetValue("", file_application_path + ",1");}//呼出处理程序RegistryKey reg_command = reg_sjbs.CreateSubKey("shell").CreateSubKey("open").CreateSubKey("command");//%1 表示传递的参数,再次%1表示调用处显示链接文本reg_command.SetValue("", "\"" + file_application_path + "\" \"%1\"");}return true;}catch { return false; }finally { reg_CurrentUser.Close(); }}

界面:

二.exe客户端代码修改

1.将Main入口args参数(帐号密码)传给login登入窗口,用于接受浏览器传入工厂,帐号,密码等参数

2.更改环境变量的当前目录按如下更改,

Environment.CurrentDirectory = AppDomain.CurrentDomain.BaseDirectory;

        static void Main(string[] args){Environment.CurrentDirectory = AppDomain.CurrentDomain.BaseDirectory;//通过反射打开form窗体,用浏览器打开,一定要加上此句(启动程序路径与本身程序路径不同,需改为相同)Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException);Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Assembly assembly = Assembly.LoadFrom(ConfigurationManager.AppSettings["StartUpFormDll"]);Form frm = assembly.CreateInstance(ConfigurationManager.AppSettings["StartUpForm"]) as Form;Logger.Instance().Register();if (args.Length > 0)frm.Tag = args[0];//将参数传给login窗口,  再到login窗口再将帐号密码解密后再登入验证Application.Run(frm);}

三.浏览器网页打开

本机网页测试:参数改为登入系统的帐号密码,即可点击标签地址实现启动本机exe并登入主界面.

在OA系统端使用:用户登入到OA系统,可通过OA系统的用户名与密码,并加密后放在href地址中;用户点击标签地址即可打开本地exe

<!DOCTYPE html>
<html lang="en"><head><meta charset="utf-8"><meta name="author" content="name"><title>启动EDS</title><style></style></head><body><a href="eds://###Factory###Username###password###">启动EDS</a><script></script></body>
</html>

四.在本机删除URLProtocol协议

1.注册表方式删除URLProtocol协议

运行regedit,如下HKEY_CLASSES_ROOT节点下,找到需要删除协义名

2.代码方式删除URLProtocol协议

       /// <summary>/// 删除协议/// </summary>/// <param name="Root_Key">根节点</param>/// <returns></returns>public bool RegeditDelete(string Root_Key){RegistryKey reg_CurrentUser = Registry.CurrentUser;try{//获取注册表CurrentUser/SOFTWARE/Classes项RegistryKey reg_Classes = reg_CurrentUser.OpenSubKey("SOFTWARE", true).OpenSubKey("Classes", true);RegistryKey reg_sjbs = reg_Classes.OpenSubKey(Root_Key, true);if (reg_sjbs != null){reg_Classes.DeleteSubKeyTree(Root_Key);return true;}return false;}catch { return false; }finally { reg_CurrentUser.Close(); }}

界面:

转载于:https://www.cnblogs.com/pcbren/p/9912322.html

PCB CS架构(工程系统)实现单点登入方法相关推荐

  1. SSO单点登入原理及简单实现

    文章目录 什么是单点登入 为什么使用单点登入 单点登入的实现 原理 问题解释 什么是单点登入 SSO(Single Sign On):单点登录是实现多个系统之间统一登录的验证系统,简单来说就是:有A, ...

  2. 深信服单点登入代理服务取AD

    @echo off ::设置服务名称 set service_name=SangforADSSO ::设置服务描述 set service_description=深信服单点登入代理服务 ::设置服务 ...

  3. CS客户端登入CAS(单点登入)方案

    最初的方案将各个连在CAS的上的应用配置成代理模式,当CS端要调用这些应用时向应用发送一个一次性票据(ticket)!后来发现这个方案有个缺陷,就是被调用的应用无法调用其它应用,原因是CS端登入时没有 ...

  4. CAS单点登入登出原理

    CAS 集中式认证服务(Central Authentication Service,CAS),单点登录协议,允许一个用户访问多个应用程序,而只需要提供一次凭证. 具体实现框架有:OAuth2,Shi ...

  5. ODOO实现微信单点登入

    1 首先你的odoo系统需要安装website builder(网站生成器),安装完成后,进行设置: 2 保存后重新登入超级用户,然后设置激活开发者模式.新建OAuth服务商: 3 填写之后保存,然后 ...

  6. linux系统停留在登入界面,登入失败问题

    今天一大早打开电脑,发现系统老是登入不了,起初怀疑是不是有人动了我电脑,因为上周五下班就回去了,公司有人加班. 后来发现应该是系统上的问题,才回想起上周五快下班的时候在配置JAVA环境,修改了/etc ...

  7. cs架构下抓包的几种方法

    burp+Proxifier进行抓包 安装证书 安装完证书配置主机代理,可以直接从chrome进入 要注意选择安装在受信任的根证书颁发机构下 Proxifier设置burp的代理 因为用的burp所以 ...

  8. CAS实现单点登入(三):登入提示消息修改

    我们看一下如果登入密码不对,cas默认的提示消息是什么? 密码不正确是默认提示的是:您提供的凭证有误. 实际中我们看到的大都是:密码错误的提示.我们修改成我们自己想要的提示语. 因为CAS异常处理逻辑 ...

  9. (配置消息转换器) sso单点登入之jsonp改进版

    原: 后台controller中 需要 返回 [ callback(json数据)] 改进的做法: 改进后所有 后台controller中的接口返回参数不用做任何改变: 之前的格式是需要 返回 [ c ...

最新文章

  1. w ndows10应用商店游,来了,微软Win10应用商店开发者95%分成开始生效
  2. python手绘教学_Python实现手绘功能
  3. HTC HD2解锁详细教程
  4. 视频去模糊论文阅读-Cascaded Deep Video Deblurring Using Temporal Sharpness Prior
  5. 【Windows XP】下载地址及产品密钥
  6. 服务器2008系统 stop c0000218,电脑蓝屏STOP:C0000218错误解决方法实记
  7. Google 工程师亲授:菜鸟开发者一定要投资的十大目标
  8. 中学生计算机编程大赛有哪些,学了编程可以参加哪些含金量高的比赛?
  9. 学习笔记_1 Matplotlib绘制散点图
  10. Xcode warning: code will never be executed.
  11. 方舟服务器 mod文件夹,方舟mod文件夹应该放在哪 | 手游网游页游攻略大全
  12. 仔细看这几段代码,看看你是Python新鸟还是老鸟
  13. Laravel图片合成
  14. 如何用MASM5.0
  15. JavaScript进阶-编程思想、构造函数的原型对象、对象原型、原型继承以及原型链
  16. 微信公众平台开发 上传素材
  17. CPU的自我控制之(5)-回头路ELR_ELx 与 指示器ESR_ELx
  18. [2021秋招笔试记录]远景智能_9.10_算法工程师
  19. dashboard android,YY Dashboard
  20. C语言字符串标准库函数

热门文章

  1. html设计一个图片墙,html5 绘制类似墙型的背景
  2. 灰度重采样的方法分为_遥感导论-期末试卷及答案
  3. python识别验证码登陆学校网站
  4. Git教程_1 简介
  5. “21天好习惯”第一期-14
  6. java中rhino什么用_使用require.js和Java / Rhino解析模块
  7. linux 自动补全快捷键,day4 Linux下的快捷键和基本命令
  8. 【李宏毅机器学习】03:误差Error
  9. scala里集合排序函数的使用
  10. 英国通讯服务商与采购“不公平待遇”的较量