1

我有一个 COBOL exe 程序,它调用一个 COBOL dll,而后者又使用一个 dos 中断“x91”调用一个 COBOL 程序——调用程序使用一个“x91”来激活一个 EXE 文件,就好像它是作为操作系统命令行输入的一样入口。包装我的 cobol 代码的安全程序是包装我的程序的第三方程序。作者建议我的程序读取环境变量以确保安全性没有被黑客入侵。我一直无法让我的 cobol 读取变量,所以我认为用 C 编写程序,可以读取变量。目前的程序所做的只是创建一个小的顺序文件,向其中写入一条记录并关闭文件 - 为了安全起见,我有第三方安全软件包装的程序,它会生成我想要验证的变量,以允许程序将记录与安全检查的内容一起写入通过或未通过的内容。调用程序(cobol dll)然后测试文件是否存在,读取记录并验证是否已将安全代码写入文件。

COBOL 程序需要翻译成 C++,因为安全包装代码的作者说他不能与 cobol 可执行文件交互。

  • 现在的程序很小
  • 它所做的只是创建一个小的顺序平面文本文件,向其中写入一条记录,然后写入记录并关闭文件。
  • 该程序需要检查由安全程序生成的某些“环境”变量的存在和值,该安全程序围绕生成文件的小程序,并在被包装的程序运行时运行。

例如,变量“LICENSE”返回当前使用的许可证的名称。感谢您的任何意见。

安全软件的作者无法提供一个小的可执行文件来检查他的变量,所以我希望从头开始创建一个来模拟我一直提到的小 cobol 程序(阅读安全程序包装的环境变量并保护我的小程序,创建一个文件,向其中写入一条记录,其内容取决于环境变量的值,然后关闭文件)。这样,调用 DLL 将收到由 'x91' 调用操作系统(需要用 C++ 编写而不是现在的 Cobol 编写的那个)执行的小程序编写的文件,验证其内容,或者允许主程序进行与否。主要软件由我从大型机遗留代码移植到 PC 的 500 多个程序组成。

激活新的小包装程序的 DOS 调用将适用于任何可执行程序,所以这真的不是问题..

4

3 回答 3

2

I know nothing about COBOL, but there are pretty clear instructions for using it to read Windows environment variables here.

After looking over that, I am glad I don't know anything about COBOL.

于 2009-04-10T19:04:11.287 回答
1

几点:

  • 我真的不认为您的代码是由“DOS 中断”执行的,因为您不能在 Windows 中使用这些代码,您的问题暗示您正在使用这些代码。顺便说一句,请添加 SO 标签来表明这一点。
  • 你说它不能读取环境变量,但是调用应用程序(用相同的语言编写)可以创建它们?这似乎也不太可能。
  • 您想在代码中的哪个位置读取环境变量以及您想用它做什么?

作为一个快速的解决方案,我建议让包装代码将环境变量值写入一个文件,然后读取它。如果您真的想要 C 或 C++ 解决方案,则必须澄清您的问题。

编辑:请注意 StackOverflow 是一个回答编程问题的网站 - 它不是一个为您提供免费软件的网站。如果问题像你说的那样简单(并且需要 C 解决方案,我仍然不相信),请聘请 C 程序员半天来编写它。

于 2009-04-10T08:42:56.507 回答
1

由于我们在这里并不都说 COBOL,而且代码相当小,因此编写一些解释 COBOL 功能的伪代码可能符合您的最佳利益。

我可能在 Perl 中找到一个可以完全满足您需求的单行代码,但目前,我不知道您到底想要什么,所以我无法帮助您。(即使您确实想要一个 Perl -单线 ;) )

于 2009-04-10T08:52:34.267 回答