Delphi 2007: Как установить TSAWARE?

В Delphi 2009 и выше вы можете добавить эту строку в свой проект .dpr, чтобы установить флаг TSAWARE PE в исполняемом приложении:

{$SetPEOptFlags IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE}

Я подумал (ошибочно), что этот синтаксис не поддерживается в Delphi 2007. У меня есть приложение, которое я не могу переносить с 2007 года на новую версию Delphi (задача выполняется, но это не будет сделано в следующем несколько месяцев).

Обновить было просто, что Windows также должна быть добавлена ​​в проект .dpr.

2 ответа

Я предполагаю, что вам не хватает единицы Windows из вашего использования .dpr. Добавьте это, и вы сможете написать:

{$SetPEOptFlags IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE}

в вашем .dpr файле. Хотя вам явно нужно написать его после предложения uses.

Функция $SetPEOptFlags добавила несколько версий до Delphi 2007. И поэтому ошибка, которую вы, по-видимому, видите, просто та, что IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE не объявлена. И это решается, убедившись, что символ отображается в файле .dpr. Ясно, что вы можете сделать это, объявив константу в файле .dpr, но чтобы избежать дублирования, я всегда предпочитаю добавлять блок Windows.


компилируется под D7

const
IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = $8000;
{$SetPEOptFlags IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE}

licensed under cc by-sa 3.0 with attribution.