Есть ли способ получить тот же результат, чем установить флаги компилятора во время выполнения для PEFlags? - PullRequest
0 голосов
/ 03 октября 2018

лет назад я наткнулся на C0000006 external exception при запуске большого (более 100 МБ) exe-файла из общей папки в некоторых конкретных локальных сетях.Поэтому я начал использовать флаги компилятора, описанные в этом вопросе .

После нескольких лет успешного "выполнения exe" на сотнях клиентов в сотнях сетей у меня начались проблемы с флагами PE (каким-то образом exe зависал при запуске на тех же компьютерах и исключая одну причину за раз, я эмпирически обнаружил, что комментирование этих флагов работает).

Каким-то образом я нашел обходной путь, чтобы дважды построить свой exe (и позволить клиентувыберите, какой из них следует развернуть), первый с этими:

{$SetPEFlags IMAGE_FILE_NET_RUN_FROM_SWAP}
{$SetPEFlags IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP} 

, а второй комментируя их.

Эти затраты на строительство раздражают, и я хотел бы их избежать.Я не думаю, что есть способ, но я спрашиваю совета специалиста: есть ли способ «активировать эти флаги во время выполнения»?например, передача параметра командной строки?

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

Спасибо.

1 Ответ

0 голосов
/ 03 октября 2018

Есть ли способ активировать эти флаги во время выполнения, например, передав параметр командной строки?

Нет, там нет.Эти флаги PE обрабатываются системным загрузчиком, и результат определяется перед выполнением любого кода в исполняемом файле.

Другой обходной путь, о котором я подумал, - это локальное копирование exe-файла при запуске exe-файла, чтобы он всегда выполнялся с локальной машины.

Именно таков эффектчто эти флаги PE имеют.Если исполняемый файл находится на сетевом томе или съемном томе, то он сначала копируется в файл подкачки (локальный файл), а затем выполняется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...