Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Создание исполняемых файлов для запуска из сетевой папки Windows: скрытие из списка открытых файлов

Delphi , Программа и Интерфейс , EXE файл

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

Подробности проблемы

Пример простого приложения на Delphi, которое компилируется в исполняемый файл размером всего 28 килобайт, выполняет простую задачу: ожидает нажатия клавиши Enter пользователем. Пока приложение запущено, оно появляется в списке открытых файлов на сервере. Были попытки использовать флаги PE для изменения поведения загрузчика, но они не дали желаемого результата.

Альтернативный ответ и обсуждение

Дополнительные исследования показали, что флаги IMAGE_FILE_NET_RUN_FROM_SWAP и IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP не предназначены для закрытия файлового дескриптора на удаленном сервере, а скорее для предотвращения ошибок при доступе к удаленным или съемным носителям. Они указывают операционной системе загрузить весь исполняемый файл в память, используя файл подкачки, что предотвращает ошибки доступа при возможном отключении сетевого диска.

Подтвержденный ответ

Исходя из комментариев и обсуждений, прямых решений для скрытия файла из списка открытых файлов сервера, используя только настройки PE, не существует. Однако есть несколько альтернативных подходов:

  1. Копирование исполняемого файла и необходимых параметрических файлов в локальную директорию пользователя перед запуском. Это можно сделать, используя функцию SHGetKnownFolderPath для получения пути к известной папке, например, FOLDERID_LocalAppData.
  2. Передача конфигурационных файлов через параметры командной строки, что позволит избежать копирования файлов.
  3. Хранение пользовательской конфигурации локально, что является лучшей практикой.

Пример кода

program CopyToLocalFolder;
uses
  System.SysUtils,
  System.Classes,
  Winapi.Windows,
  SHLWAPI;

function GetKnownFolderPath(const FolderID: TGUID): string;
var
  FolderPath: TCharBuffer;
  FolderPathLength: Cardinal;
begin
  FolderPathLength := 0;
  if not SHGetKnownFolderPath(TGuid(FolderID), IntNull, nil, KFFLAGS.NORMAL, FolderPathLength) then
    raise Exception.CreateFmt('SHGetKnownFolderPath failed: %s', [SysErrorMessage(GetLastError)]);

  SetLength(FolderPath, FolderPathLength + 1);
  if not SHGetKnownFolderPath(TGuid(FolderID), IntNull, nil, KFFLAGS.NORMAL, FolderPath[0]) then
    raise Exception.CreateFmt('SHGetKnownFolderPath failed: %s', [SysErrorMessage(GetLastError)]);

  Result := FolderPath;
end;

var
  LocalAppDataFolder: string;
begin
  LocalAppDataFolder := GetKnownFolderPath(FOLDERID_LocalAppData);
  // Здесь должен быть код для копирования файлов в полученную директорию
  // ...
end.

Заключение

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

Создано по материалам из источника по ссылке.

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


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: EXE файл ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 12:45:26/0.0035791397094727/0