Простая программа на cobol должна быть перекодирована как программа на C ++ для чтения переменных среды, передаваемых программным обеспечением безопасности - PullRequest
1 голос
/ 10 апреля 2009

У меня есть exe-программа на COBOL, которая вызывает DLL-библиотеку COBOL, которая, в свою очередь, вызывает программу на COBOL с использованием прерывания dos 'x91 - вызывающая программа использует x91 для активации файла EXE, как если бы он был введен в качестве рабочего системная запись командной строки. Программа безопасности, которая оборачивает мой код cobol, является сторонней программой, которая оборачивает мою программу. Автор предложил, чтобы моя программа считывала переменные среды, чтобы гарантировать, что безопасность не была взломана. Мне не удалось заставить моего cobol читать переменные, поэтому я подумал, что при написании программы на C переменные могут быть прочитаны. Все, что делает настоящая программа, - это создает небольшой последовательный файл, записывает в него одну запись и закрывает файл - для безопасности у меня есть программа, обернутая сторонним программным обеспечением безопасности, и она генерирует переменные, которые я хочу проверить, чтобы программа могла запишите запись с содержанием проверки безопасности как пройденную или не пройденную. вызывающая программа (cobol dll) затем проверяет наличие файла, считывает запись и проверяет, был ли код безопасности записан в файл.

Программа на языке COBOL должна быть переведена на C ++, потому что автор кода оберточной защиты говорит, что не может взаимодействовать с исполняемыми файлами cobol.

  • Нынешняя программа маленькая
  • Все, что он делает, это создает небольшой последовательный плоский текстовый файл, записывает в него одну запись, а затем записывает запись и закрывает файл.
  • Программа должна проверить наличие и значение определенных переменных «окружения», генерируемых программой безопасности, которая оборачивается вокруг маленькой программы, генерирующей файл, и запускается во время работы упакованной программы.

Например, переменная «LICENSE» возвращает имя текущей используемой лицензии. спасибо за любой вклад.

Автор защитного программного обеспечения не смог предоставить небольшой исполняемый файл для проверки своих переменных, поэтому я стремлюсь создать его с нуля, который будет эмулировать маленькая программа на cobol, о которой я говорил (прочитайте переменные окружения программы защиты, защитив мою маленькую программу, создайте файл, запишите в него одну запись, содержимое которой зависит от значений переменной окружения, а затем закройте файл). Таким образом, вызывающая DLL получит файл, написанный небольшой программой, выполняемой с помощью вызова x91 для операционной системы (той, которая должна быть закодирована в C ++ вместо нынешнего Cobol), проверит его содержимое и разрешит либо основная программа исходить или нет. Основное программное обеспечение состоит из более чем 500 программ, которые я перенес с устаревшего кода мэйнфрейма на ПК. Я имел обыкновение использовать ключи, но мои клиенты ненавидели их, поскольку они мешали своим принтерам ...

вызов DOS, который активирует новую небольшую упакованную программу, будет работать с любой исполняемой программой, так что это действительно не проблема ..

Ответы [ 3 ]

2 голосов
/ 10 апреля 2009

Я ничего не знаю о COBOL, но есть довольно четкие инструкции по его использованию для чтения переменных среды Windows здесь .

После просмотра я рад Я ничего не знаю о КОБОЛЕ.

1 голос
/ 10 апреля 2009

Поскольку мы не все здесь говорим на языке COBOL, а код достаточно мал, вероятно, в ваших интересах написать некоторый псевдокод, объясняющий, что делает COBOL.

Я мог бы , вероятно, найти однострочник в Perl, который бы делал именно то, что вы хотите, но в настоящее время я не знаю точно, что вы делаете , поэтому Я не могу вам помочь. (Даже если вы действительно хотели Perl-one-liner;))

1 голос
/ 10 апреля 2009

Некоторые баллы:

  • Я действительно не думаю, что ваш код выполняется "прерыванием DOS", так как вы не можете использовать их с Windows, что подразумевает использование вами вашего вопроса. Кстати, пожалуйста, добавьте SO теги, чтобы указать это.
  • Вы говорите, что он не может читать переменные среды, но что вызывающее приложение (написанное на том же языке) может их создавать? Это тоже маловероятно.
  • Где в коде вы хотите прочитать переменную среды и что вы хотите с ней?

В качестве быстрого решения я предлагаю, чтобы код переноса записал значения переменной среды в файл, а затем прочитал это. Если вам действительно нужно решение на C или C ++, вам нужно уточнить ваш вопрос.

Редактировать: Обратите внимание, что StackOverflow - это сайт для ответов на вопросы по программированию - это не сайт, который предоставляет вам бесплатное программное обеспечение. Если проблема настолько проста, как вы говорите (и требует решения на C, в чем я до сих пор не убежден), наймите программиста на C на полдня, чтобы написать ее.

...