解决WIN2003安全性问题的一点经验
2010-10-25 00:08
225 查看
本人开发一个采集程序,主要功能是收集终端的数据,然后再通过WEBSERVICE把数据写入到第三方公司的数据库中;程序写好后同终端及第三方公司的WEBSERVICE联调通过,布署到本公司的一台电脑上运行,以配合我司终端试用;日前,客户采购我司终端正式使用,需要把采集程序布署到第三方公司的一台服务器上;没想到联调通过,并且在本公司电脑上运行多日功能也正常的采集程序,在第三方公司的服务器上运行后却功能不正常,具体地说就是调用WEBSERVICE保存数据异常,经过反复对比测试,最后发现问题在操作系统上,采集程序如果部署在WINXP、WIN2003标准版上,都没有问题,但第三方公司的服务器是WIN2003,保存就出现异常;WINXP、WIN2003标准版和WIN2003企业版有什么不同呢?应该只是安全策略方面不同,WIN2003企业版安全性更高;本人对操作系统的安全设置不十分了解,所以虽然想到了问题之所在,却还是不知道解决办法;最后还是通过网上搜索找到了设置方法(这里要特别感谢互联网,每次碰到自己不能解决的问题时,都是通过网上搜索找到方法的)如下:
在我的电脑->属性窗体上,选择高级标签页,在性能一栏中点击设置按钮,在弹出窗体上选择数据执行保护标签页,这里有两种选择都可以解决问题:
一、选择第一个选项:仅为基本WINDOWS程序和服务启用DEP(T);
二、仍然还是选择第二个选项:为除下列选定程序之外的所有程序和服务启用DET(U);但要点击下面的添加按钮,把采集程序加到列表中;
需要说明的是:WINXP、WIN2003标准版默认是选择第一项的,而WIN2003企业版默认是选择第二项的;
我告诉客户选择第一项,重启电脑后,采集程序工作正常了;但问题到这里还没完,在数据量大的时候,采集程序有丢数据的情况,一查原来是接收数据的处理过程有问题,需要优法;于是就进行了优法,简单地测试了一下就发给客户更新到服务器上,但奇怪的是又出现了保存异常,这次情况是:采集程序有两个地方调用WEBSERVICE,一处地方出现异常,另一处就不会;难道还是安全性问题吗,应该不是;因为如果是安全性问题的话,应该两处调用都会异常,就象前面的那样;而且在公司同样操作系统的电脑上面测试就没有问题;经过仔细检查代码,迷惑没有彻底解开,但大体定位了问题之所在:
采集程序是用C++BUILDER开发的,在调用每个WEBSERVICE时都要定义一个THTTPRIO类型的变量,采集程序在两处地方,总共要调用三个WEBSERVICE,所以也就要在两处地方,定义三个THTTPRIO类型的变量;两处地方分属于两个类文件,按常规做法,应该把THTTPRIO类型变量定义为类中的变量,但当时遇到了这样一个问题,如果定义在类中,就要把相应的引用文件放到类的头文件中,而要命的是这样做的话,就引起了另一引用该类头文件的源程序文件中的TMESSAGE类型的冲突,THTTPRIO类型的相关引用文件中也有TMESSAGE类型的定义,和普通的MESSAGES.HPP中的TMESSAGE类型定义分不清了,编译就报错(其实这个问题有解决办法,后面会说到,当时没想到);没奈何,只好把THTTPRIO类型变量定义在类的源文件中,这样变量就不属于类中的,而是全局的了;当时还犯了一个致命错误:在随手定义变量时,把两处地方的两个变量命名得相同(采用简单命名法,都命名为了HTTPRIO1),这样就产生了冲突(因为都是全局的,调用时分不清);但为什么有的电脑有问题,有的就没有(即使操作系统的版本相同),接收数据过程优法之前没问题,优法之后就有问题(同一台电脑),这就是前面所谓的迷惑没有彻底解开的地方;总而言之,通过把THTTPRIO类型变量定义到类中,并通过在TMESSAGE类型前面加MESSAGES::修饰符解决类型定义的冲突后,就没有问题了。
在我的电脑->属性窗体上,选择高级标签页,在性能一栏中点击设置按钮,在弹出窗体上选择数据执行保护标签页,这里有两种选择都可以解决问题:
一、选择第一个选项:仅为基本WINDOWS程序和服务启用DEP(T);
二、仍然还是选择第二个选项:为除下列选定程序之外的所有程序和服务启用DET(U);但要点击下面的添加按钮,把采集程序加到列表中;
需要说明的是:WINXP、WIN2003标准版默认是选择第一项的,而WIN2003企业版默认是选择第二项的;
我告诉客户选择第一项,重启电脑后,采集程序工作正常了;但问题到这里还没完,在数据量大的时候,采集程序有丢数据的情况,一查原来是接收数据的处理过程有问题,需要优法;于是就进行了优法,简单地测试了一下就发给客户更新到服务器上,但奇怪的是又出现了保存异常,这次情况是:采集程序有两个地方调用WEBSERVICE,一处地方出现异常,另一处就不会;难道还是安全性问题吗,应该不是;因为如果是安全性问题的话,应该两处调用都会异常,就象前面的那样;而且在公司同样操作系统的电脑上面测试就没有问题;经过仔细检查代码,迷惑没有彻底解开,但大体定位了问题之所在:
采集程序是用C++BUILDER开发的,在调用每个WEBSERVICE时都要定义一个THTTPRIO类型的变量,采集程序在两处地方,总共要调用三个WEBSERVICE,所以也就要在两处地方,定义三个THTTPRIO类型的变量;两处地方分属于两个类文件,按常规做法,应该把THTTPRIO类型变量定义为类中的变量,但当时遇到了这样一个问题,如果定义在类中,就要把相应的引用文件放到类的头文件中,而要命的是这样做的话,就引起了另一引用该类头文件的源程序文件中的TMESSAGE类型的冲突,THTTPRIO类型的相关引用文件中也有TMESSAGE类型的定义,和普通的MESSAGES.HPP中的TMESSAGE类型定义分不清了,编译就报错(其实这个问题有解决办法,后面会说到,当时没想到);没奈何,只好把THTTPRIO类型变量定义在类的源文件中,这样变量就不属于类中的,而是全局的了;当时还犯了一个致命错误:在随手定义变量时,把两处地方的两个变量命名得相同(采用简单命名法,都命名为了HTTPRIO1),这样就产生了冲突(因为都是全局的,调用时分不清);但为什么有的电脑有问题,有的就没有(即使操作系统的版本相同),接收数据过程优法之前没问题,优法之后就有问题(同一台电脑),这就是前面所谓的迷惑没有彻底解开的地方;总而言之,通过把THTTPRIO类型变量定义到类中,并通过在TMESSAGE类型前面加MESSAGES::修饰符解决类型定义的冲突后,就没有问题了。
相关文章推荐
- 解决绘图时闪烁问题的一点经验
- 解决绘图时闪烁问题的一点经验
- 新手解决winform问题的一点小经验
- PHP 导出Excel一点小经验 解决乱码问题.
- PHP 导出Excel一点小经验 解决乱码问题
- 解决绘图时闪烁问题的一点经验
- 解决绘图时闪烁问题的一点经验
- PHP 导出Excel一点小经验:解决乱码问题
- 好长时间上不了博客,我还以为因为我发表抗日言论账户被删了,编程中好多新经验新发现不能拿出来和朋友们分享,那个急呀。以下是我在工作中积累的一些经验和解决的一些问题,希望能对大家有一点帮助。
- (VC)解决绘图时闪烁问题的一点经验[转]
- PHP 导出Excel一点小经验 解决乱码问题.
- 解决VC绘图时闪烁问题的一点经验
- 解决绘图时闪烁问题的一点经验
- Win2003中SQL不开1433端口问题解决方法
- 关于多文档MFC从xp系统上移植到win7上出现错误的问题解决经验
- 工作中的问题解决 -- (win2003 asp.net) Session和带页面回传的方法无法正常使用解决方案
- 电子商务系统中要解决的安全性问题
- 编程经验:E8 PowerConsole系列问题与解决方法(一)
- 有时候,一点小问题,就会纠结你半天,真是基础不牢啊。 彻底解决 django的模板templates路径的问题; 一般会提示什么模板找不到,类似:TemplateDoesNotExist at /ac
- 对c#剪切板Clipboard占用的问题一点解决方法