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

Использование привилегированного запуска и изоляция процессов в Delphi 2007 под Windows Vista

Delphi , ОС и Железо , Windows

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

Решение проблемы

Для решения этой задачи можно использовать функцию CreateProcessWithLogonW(), которая позволяет запустить процесс с указанными учетными данными. Также можно использовать функцию CreateProcessMediumIL(), которая позволяет запустить процесс с уровнем интеграции, соответствующим уровню интеграции процесса "Проводника" (Explorer).

Пример кода на Object Pascal (Delphi)

Для запуска процесса с пониженными привилегиями можно использовать следующий код:

uses
  Winapi.Windows;

function CreateProcessMediumIL(lpApplicationName: PWChar; lpCommandLine: PWChar; ...): DWORD;  // Остальная часть функции опущена для краткости

// Пример использования функции CreateProcessMediumIL
procedure RunNonElevatedApp(ApplicationName, CommandLine: string);
var
  StartupInfo: TStartupInfoW;
  ProcessInformation: TProcessInformation;
begin
  ZeroMemory(@StartupInfo, SizeOf(StartupInfo));
  StartupInfo.cb := SizeOf(StartupInfo);
  StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
  StartupInfo.wShowWindow := SW_NORMAL;
  CreateProcessMediumIL(PChar(ApplicationName), PChar(CommandLine), nil, nil, False, 0, nil, nil, StartupInfo, ProcessInformation);
end;

begin
  RunNonElevatedApp('C:\Windows\notepad.exe', '');
end;

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

Использование функции CreateProcessMediumIL позволяет запустить процесс с уровнем интеграции "средний", что соответствует требованиям безопасности Windows Vista для запуска подпроцессов с пониженными привилегиями.

Альтернативный ответ

В дополнение к вышеуказанному методу, можно также использовать функцию CreateProcessWithTokenW, которая позволяет запустить процесс с учетными данными процесса "Проводника". Это может быть полезно, если требуется запустить процесс с привилегиями обычного пользователя рабочего стола.

Заключение

В данной статье был рассмотрен процесс запуска подпроцессов с пониженными привилегиями из приложения, запущенного с повышенными привилегиями в среде Windows Vista. Предоставленные примеры кода на Object Pascal (Delphi) демонстрируют, как это можно реализовать на практике.

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

Вопрос касается технологии запуска подпроцессов с пониженными привилегиями в среде Delphi 2007 под управлением Windows Vista.


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

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




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


:: Главная :: Windows ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 17:38:31/0.0031800270080566/0