解决WIN2003安全性问题的一点经验

本人开发一个采集程序,主要功能是收集终端的数据,然后再通过WEBSERVICE把数据写入到第三方公司的数据库中;程序写好后同终端及第三方公司的WEBSERVICE联调通过,布署到本公司的一台电脑上运行,以配合我司终端试用;日前,客户采购我司终端正式使用,需要把采集程序布署到第三方公司的一台服务器上;没想到联调通过,并且在本公司电脑上运行多日功能也正常的采集程序,在第三方公司的服务器上运行后却功能不正常,具体地说就是调用WEBSERVICE保存数据异常,经过反复对比测试,最后发现问题在操作系统上,采集程序如果部署在WINXPWIN2003标准版上,都没有问题,但第三方公司的服务器是WIN2003,保存就出现异常;WINXPWIN2003标准版和WIN2003企业版有什么不同呢?应该只是安全策略方面不同,WIN2003企业版安全性更高;本人对操作系统的安全设置不十分了解,所以虽然想到了问题之所在,却还是不知道解决办法;最后还是通过网上搜索找到了设置方法(这里要特别感谢互联网,每次碰到自己不能解决的问题时,都是通过网上搜索找到方法的)如下:

在我的电脑->属性窗体上,选择高级标签页,在性能一栏中点击设置按钮,在弹出窗体上选择数据执行保护标签页,这里有两种选择都可以解决问题:

一、选择第一个选项:仅为基本WINDOWS程序和服务启用DEPT);

二、仍然还是选择第二个选项:为除下列选定程序之外的所有程序和服务启用DETU);但要点击下面的添加按钮,把采集程序加到列表中;

需要说明的是:WINXPWIN2003标准版默认是选择第一项的,而WIN2003企业版默认是选择第二项的;

我告诉客户选择第一项,重启电脑后,采集程序工作正常了;但问题到这里还没完,在数据量大的时候,采集程序有丢数据的情况,一查原来是接收数据的处理过程有问题,需要优法;于是就进行了优法,简单地测试了一下就发给客户更新到服务器上,但奇怪的是又出现了保存异常,这次情况是:采集程序有两个地方调用WEBSERVICE,一处地方出现异常,另一处就不会;难道还是安全性问题吗,应该不是;因为如果是安全性问题的话,应该两处调用都会异常,就象前面的那样;而且在公司同样操作系统的电脑上面测试就没有问题;经过仔细检查代码,迷惑没有彻底解开,但大体定位了问题之所在:

采集程序是用C++BUILDER开发的,在调用每个WEBSERVICE时都要定义一个THTTPRIO类型的变量,采集程序在两处地方,总共要调用三个WEBSERVICE,所以也就要在两处地方,定义三个THTTPRIO类型的变量;两处地方分属于两个类文件,按常规做法,应该把THTTPRIO类型变量定义为类中的变量,但当时遇到了这样一个问题,如果定义在类中,就要把相应的引用文件放到类的头文件中,而要命的是这样做的话,就引起了另一引用该类头文件的源程序文件中的TMESSAGE类型的冲突,THTTPRIO类型的相关引用文件中也有TMESSAGE类型的定义,和普通的MESSAGES.HPP中的TMESSAGE类型定义分不清了,编译就报错(其实这个问题有解决办法,后面会说到,当时没想到);没奈何,只好把THTTPRIO类型变量定义在类的源文件中,这样变量就不属于类中的,而是全局的了;当时还犯了一个致命错误:在随手定义变量时,把两处地方的两个变量命名得相同(采用简单命名法,都命名为了HTTPRIO1),这样就产生了冲突(因为都是全局的,调用时分不清);但为什么有的电脑有问题,有的就没有(即使操作系统的版本相同),接收数据过程优法之前没问题,优法之后就有问题(同一台电脑),这就是前面所谓的迷惑没有彻底解开的地方;总而言之,通过把THTTPRIO类型变量定义到类中,并通过在TMESSAGE类型前面加MESSAGES::修饰符解决类型定义的冲突后,就没有问题了。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值