还是因为那个8点半前要启动近百套报盘程序的问题,差不多两周前表示自己会抽空给解决掉,一次性启动,直到昨天才差不多能够抽点时间出来开始想怎么解决的问题。

这个问题的复杂点在于除了启动exe外,还需要鼠标点击界面上的登录并输入用户名密码,然后选择通道进行启动,一个程序可能会有多个通道。其次,它是用vc ++写的,但是笔者并没有c++的开发经验,所以即使拿到直接的dll也没有用。

所以,一开始考虑通过windows远程桌面登录,并在登录的时候自动启动程序,于是baidu/bing了下,确实有,类似如下:

https://zhidao.baidu.com/question/215168970.html

https://zhidao.baidu.com/question/215168970.html?qbl=relate_question_0&word=%D4%B6%B3%CC%D7%C0%C3%E6%D4%CB%D0%D0%D6%B8%B6%A8%B3%CC%D0%F2

于是发现,到windows 10的时候,这个程序的tab选项消失了,于是msdn继续搜,可知rdp本身就是一个配置文件而已,具体就不详细说了,有需要的可参考如下:

https://social.technet.microsoft.com/Forums/en-US/8498aa46-309b-47f2-9f31-fa66c3c905f0/program-tab-missing-from-windows-10-remote-desktop-connection-and-the-history-brought-from-windows-8?forum=win10itprovirt

反正各种改,包括改组策略里面的值(组策略实时生效http://blog.sina.com.cn/s/blog_44e5d6d10100znkk.html),等等各种测试,差不多折腾了1个小时左右,发现通过rdp登录自动启动exe方式不怎么靠谱和稳定、而且windows 7 64位之后和之前相差的太多,果断换方案,在目标服务器上丢一个代理,远程通过http进行控制。

于是随即就改了方案,通过java加载配置文件中的exe路径去启动,然后报盘程序在被启动之后主动socket连接到监控程序,监控程序接下去反向控制所有的报盘程序。差不多一个下午,服务端就整个框架和大部分代码结构就完成了。

从这个问题引申出的(包括昨天下午我们公司在讨论有些客户测试出来的安全性问题时)一个重要现象在于,很多中小型公司或者部门,通常解决问题的方式是打地鼠式或者说头痛医头、脚痛医脚、拿来就用(跟大公司里面的刚好是两个极端),在真正行动前并没有花一些时间去思考一下真正的问题源头和当前采用方案的不稳定性而不是稳定性在哪里,结果导致很多问题持续几个月都没有解决干净、而是每次出现靠人工去检查和修复错误的数据。这些问题,程序员修复的时候似乎都是打地鼠,有一个洞那就堵上,洞什么原因出现的反而不去关心,更不要说根治,或许这跟公司的领导层背景有一定的关系,因为根治一个问题通常需要一次性花费比堵漏洞多10倍的精力,并且其副作用很可能是以后就清闲了,而在绝大部分公司清闲的程序员被认为是不努力的。

一个远程启动windows c++程序引发的技术决策现象的更多相关文章

  1. 一个优秀windows C++程序员的知识体系

    思考一个优秀windows C++ 程序员该有哪些知识,可最终发现什么知识都不能少, 看下图: 除了上面知识,程序员还要不断学习, 保持对新知识的热情. 转自http://www.cppblog.co ...

  2. 一个优秀windows C++程序员的知识体系[转]

    转自:一个优秀windows C++程序员的知识体系 思考一个优秀windows C++ 程序员该有哪些知识,可最终发现什么知识都不能少, 看下图: 除了上面知识,程序员还要不断学习, 保持对新知识的 ...

  3. 转:一个优秀windows C++程序员的知识体系

    转自:http://www.cppblog.com/weiym/archive/2012/06/10/178287.html.根据自身的经历,觉得作者总结的很好. 思考一个优秀windows C++ ...

  4. 一个优秀windows C++ 程序员该有哪些知识

  5. 运用JavaScript构建你的第一个Metro式应用程序(on Windows 8)(一)

    原文 http://blog.csdn.net/zhangxin09/article/details/6784547 作者:Chris Sells 译: sp42   原文 包括 HTML.CSS 和 ...

  6. 利用JSP编程技术实现一个简单的购物车程序

    实验二   JSP编程 一.实验目的1. 掌握JSP指令的使用方法:2. 掌握JSP动作的使用方法:3. 掌握JSP内置对象的使用方法:4. 掌握JavaBean的编程技术及使用方法:5. 掌握JSP ...

  7. 使用Visual Studio 2008创建你的第一个Windows Mobile程序介绍

    使用Visual Studio 2008创建你的第一个Windows Mobile程序介绍 Windows MobileMobileWindowsMicrosoftWinForm 介绍 Microso ...

  8. Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer 关于Newtonsoft.Json,LINQ to JSON的一个小demo mysql循环插入数据、生成随机数及CONCAT函数 .NET记录-获取外网IP以及判断该IP是属于网通还是电信 Guid的生成和数据修整(去除空格和小写字符)

    Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer   Advanced Installer :Free for 30 da ...

  9. 我的第一个 Windows 窗口程序(1)

    一般来说,构建一个 Windows 程序可以分为如下几个步骤: 定义窗口类(WNDCLASS) 注册窗口类(RegisterClass) 创建窗口(CreateWindow) 更新显示窗口(Updat ...

随机推荐

  1. python 将字符串转换为字典

    在一般的工程处理中,需要将获取的字符串数据转换为字典,这样处理起来会非常方便. 我获取的是json数据: content = {"corpus_no":"64702772 ...

  2. ionic 相关问题解决办法记录

    1.npm无法安装模块 报code E400错误 解决办法: 删除npmrc文件. 注意:不是nodejs安装目录npm模块下的那个npmrc文件,而是在C:\Users\{账户}\下的.npmrc文 ...

  3. php安装redis扩展'checking for igbinary includes... configure: error: Cannot find igbinary.h'解决方法

    今天准备给yii2安装redis扩展,先安装了redis服务,然后安装redis php官方扩展,在make的时候提示' checking for igbinary includes... confi ...

  4. 通过 Kubernetes 和容器实现 DevOps

    https://mp.weixin.qq.com/s/1WmwisSGrVyXixgCYzMA1w 直到 Docker 的出现(2008 年),容器才真正具备了较好的可操作性和实用性.容器技术的概念最 ...

  5. PL/SQL自定义函数

    从SQL表达式中调用函数的限制 为了从SQL表达式中调用函数,一个用户定义函数必须: 是存储函数 只接受IN函数 只接收有受的SQL数据类型,而不接受PL/SQL数据类型 返回数据类型为有效的SQL数 ...

  6. linux下ssh远程登录/scp远程复制文件/rsync远程同步命令的自动登录

    最近需要写一个脚本备份各个服务器上的程序到一个指定服务器上,本来以为查查rsync命令的使用321就能搞定,结果rsync命令要支持自动登 录还是要配置服务和参数,又不确定网上说的配置的行不行,因为都 ...

  7. 如何删除帝国cms面包屑导航中首页链接的/index.html

    前面一篇"帝国cms面包屑导航的首页链接锚文本改成关键字"中xmyanke有写到改首页链接的方法,但是感觉比较麻烦,这里就说说如何删除帝国cms面包屑导航中首页链接的/index. ...

  8. host文件常用地址

    #+UPDATE_TIME 2016-02-16 19:52:05 UTC+8#+MESSAGE#################################################### ...

  9. linux基础(1)-终端&shell类型&命令&文件系统&命令帮助的获取

    终端 用于与主机交互,必然用到的设备. 物理终端 直接接入本机的显示器和键盘设备:Console. 虚拟终端 附加在物理终端之上的以软件方式虚拟实现的终端,CentOS 6 默认启动 6 个虚拟终端. ...

  10. [LeetCode] 394. Decode String_Medium tag: stack 666

    Given an encoded string, return it's decoded string. The encoding rule is: k[encoded_string], where ...