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

Как запустить программу с правами администратора

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

Code:

unit Main;
 
interface
 
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ShellApi;
 
type
TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
end;
 
var
Form1: TForm1;
 
implementation
 
function CreateProcessWithLogonW(
lpUsername: PWideChar;
lpDomain: PWideChar;
lpPassword: PWideChar;
dwLogonFlags: DWORD;
lpApplicationName: PWideChar;
lpCommandLine: PWideChar;
dwCreationFlags: DWORD;
lpEnvironment: Pointer;
lpCurrentDirectory: PWideChar;
const lpStartupInfo: _STARTUPINFOA;
var lpProcessInfo: PROCESS_INFORMATION): BOOL; stdcall; external 'advapi32.dll' name 'CreateProcessWithLogonW';
 
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var
hLib:THandle;
si: _STARTUPINFOA;
pi: Process_Information;
begin
ZeroMemory(@Si, Sizeof(si));
si.cb := SizeOf(si);
CreateProcessWithLogonw('administrator', nil, 'master', 1, nil, 'notepad', 0, nil, nil, si, pi);
end;
 
end.

Должно работать, только лучше указывать полный путь до папки запускаемого приложения... без этого у меня некоторые приложения не запускались(один из параметров после 'notepad').

PS: обратите внимание, что в третьем параметре обязательно указывается пароль.

PPS: в принципе программу можно запустить от имени любого пользователя.

Автор: win_nt

Взято из http://forum.sources.ru

Программа на Delphi!

Код, предоставленный ниже, представляет собой простое приложение с графическим интерфейсом (GUI), которое демонстрирует использование функции CreateProcessWithLogonW из Windows API для запуска процесса с учетными данными.

Вот разбивка кода:

  • Класс TForm1 представляет собой основную форму приложения, которая содержит одиночный кнопку (Button1).
  • Когда кнопка нажата, процедура Button1Click выполняется.
  • Эта процедура вызывает функцию CreateProcessWithLogonW, чтобы запустить приложение Notepad с учетными данными. Параметры, переданные в эту функцию:
    • lpUsername: Имя пользователя для процесса входа (в этом случае - "администратор").
    • lpDomain: Имя домена (не используется в этом примере).
    • lpPassword: Пароль для процесса входа (в этом случае - "мастер").
    • dwLogonFlags: Флаг, определяющий, как должен быть выполнен процесс входа (в этом случае - 1).
    • lpApplicationName: Имя приложения для запуска (Notepad).
    • lpCommandLine: Опциональный аргумент командной строки для запущенного приложения.
    • dwCreationFlags: Флаги, контролирующие создание нового процесса.
    • lpEnvironment: Указатель на блок окружения (не используется в этом примере).
    • lpCurrentDirectory: Текущий рабочий каталог для нового процесса (не используется в этом примере).
    • si и pi: Структуры, содержащие информацию о параметрах запуска и информации о процессе соответственно.

Программа использует функцию ZeroMemory, чтобы инициализировать структуру si нулями, устанавливает ее размер с помощью SizeOf и затем передает ее вместе с другими параметрами в функцию CreateProcessWithLogonW.

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

В отношении вашего комментария о спецификации пароля, да, это верно. Третий параметр (lpPassword) необходим для корректной работы этой функции.

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

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

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


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

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




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


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


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 14:25:01/0.0058560371398926/1