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

Запустить процесс в защищенной области другого пользователя

Delphi , Программа и Интерфейс , Процессы и Сервисы

Запустить процесс в защищенной области другого пользователя

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

uses
   JwaWinBase; ( http://members.chello.nl/m.vanbrakel2/ ) 

//... 

procedure TForm1.Button1Click(Sender: TObject);
 var
    si: STARTUPINFOW;
    pif: PROCESS_INFORMATION;
    res: Bool;
   s: string;
 begin
   //erstmal die StartUpInfoW setzen 
  //set StartUpInfoW first 
  si.cb := SizeOf(startupinfow);
   si.dwFlags  := STARTF_USESHOWWINDOW;
   si.wShowWindow := SW_SHOWDEFAULT;
   si.lpReserved := nil;
   si.lpDesktop := nil;
   si.lpTitle := 'Konsole';

   // dann CreateProcessWithLogonW ausfьhren... 
  // run CreateProcessWithLogonW... 
  res := CreateProcessWithLogonW('Security', 'ArViCor', 'test', LOGON_WITH_PROFILE,
     'c:\win2kas\system32\regedt32.exe', nil
     , CREATE_DEFAULT_ERROR_MODE, nil, nil, si, pif);
   if booltostr(res) = '0' then
    begin
     //wenn ein Fehler auftritt, soll der Fehlercode ausgegeben werden 
    //ьber 'net helpmsg ' in der Kommandoeingabeaufforderung 
    //kann dieser entziffert werden 

    //if an error occures, show the error-code 
    //this code can be 'translated' with 'net helpmsg ' on command-prompt 
    str(GetLastError, s);
     ShowMessage('CreateProcessWithLogonResult: ' + booltostr(res) + #10 +
       'GetLastError: ' + s);
   end;
 end;

 // Verbesserungen gerne als Mail an mich! 

Программный код, предоставленный вами, написан на языке Delphi и использует функцию CreateProcessWithLogonW для запуска нового процесса с элевированными привилегиями, конкретно запуская исполняемый файл regedt32.exe.

В более подробном виде это происходит следующим образом:

  1. Код устанавливает структуру STARTUPINFOW (si), которая определяет, как новый процесс должен быть запущен.
  2. Код вызывает функцию CreateProcessWithLogonW, передавая следующие параметры:
    • Пользовательский идентификатор безопасности (Security, ArViCor и test).
    • Путь к исполняемому файлу (c:\win2kas\system32\regedt32.exe).
    • Флаги, указывающие, как процесс должен быть запущен (CREATE_DEFAULT_ERROR_MODE).
    • Без дополнительных переменных окружения или рабочей директории.
    • Структуру STARTUPINFOW (si) для настройки нового процесса.
  3. Если создание нового процесса fails, код ловит ошибку и отображает сообщение с кодом ошибки с помощью функции GetLastError.

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

Если вам нужно запустить процесс с элевированными привилегиями (например, как администратор), вам может потребоваться использовать другие техники, такие как:

  1. Использование функции RunAs из Windows API.
  2. Создание отдельного процесса с помощью CreateProcessW и указанием желаемого контекста безопасности.
  3. Использование третьей-сторонней библиотеки или фреймворка, которая предоставляет функциональность для запуска процессов с элевированными привилегиями.

Обратите внимание, что это код является quite old (из 2001 года) и может не работать как ожидалось в новых версиях Windows. Вам рекомендуется обновить код, используя более современные API и техники.

В качестве альтернативы вы можете использовать функцию ShellExecute для запуска исполняемого файла с элевированными привилегиями:

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShellExecute(0, 'runas', PChar('c:\win2kas\system32\regedt32.exe'), nil, nil, SW_SHOWNORMAL);
end;

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

В статье описывается пример программирования на Delphi, который позволяет запустить процесс в защищенной области другого пользователя с помощью функции CreateProcessWithLogonW.


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

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




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


:: Главная :: Процессы и Сервисы ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-01-29 05:56:58/0.0034899711608887/0