Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.08.2015, 21:07   #1
CheChe
Пользователь
 
Аватар для CheChe
 
Регистрация: 25.06.2015
Сообщений: 11
Вопрос Запуск другой программы с правами администратора зная пароль

Есть учетка администратора. Хочу запустить на ней из своей программы другую программу (regedit.exe) с правами администратора сразу без подтверждения UAC, но в итоге получаю ошибку: "Code 740 - Запрошенная операция требует повышения".
Код программы приведен ниже, помогите разобраться!

Код:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm2 = class(TForm)
    btn1: TButton;
    procedure btn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;
     FileName : PWideChar;

implementation

{$R *.dfm}

function CreateProcessWithLogonW(
    lpUsername: LPCWSTR;
    lpDomain: LPCWSTR;
    lpPassword: LPCWSTR;
    dwLogonFlags: DWORD;
    lpApplicationName: LPCWSTR;
    lpCommandLine: LPWSTR;
    dwCreationFlags: DWORD;
    lpEnvironment: Pointer;
    lpCurrentDirectory: LPCWSTR;
    const lpStartupInfo: _STARTUPINFOA;
    var lpProcessInfo: _PROCESS_INFORMATION
  ): Boolean; stdcall; external 'Advapi32.dll';


procedure TForm2.btn1Click(Sender: TObject);
var
  startupinfo: _STARTUPINFOA;
  processinformation: _PROCESS_INFORMATION;
begin
  ZeroMemory(@startupinfo, SizeOf(_STARTUPINFOA));
  startupinfo.cb:=SizeOf(_STARTUPINFOA);
  startupinfo.dwFlags:=STARTF_USESHOWWINDOW;
  startupinfo.wShowWindow:=SW_SHOW;
  FileName := PWideChar(WideString('regedit.exe'));

  if CreateProcessWithLogonW('ADMIN-KAFE', nil, 'mysuperpassword', 0, nil, FileName, 0, nil, nil, startupinfo, processinformation) then
  begin
    CloseHandle(processinformation.hThread);
    CloseHandle(processinformation.hProcess);
  end else RaiseLastOSError;
end;

end.
CheChe вне форума Ответить с цитированием
Старый 16.08.2015, 14:05   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
CreateProcessWithLogon
По-моему эта функция не относится к запуску минуя UAC.
А просто сделать ярлык на прогу, в котором указать настройку "Запуск с правами админа" не катит?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.08.2015, 15:06   #3
CheChe
Пользователь
 
Аватар для CheChe
 
Регистрация: 25.06.2015
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А просто сделать ярлык на прогу, в котором указать настройку "Запуск с правами админа" не катит?
Программно такой ярлык можно сделать?
CheChe вне форума Ответить с цитированием
Старый 16.08.2015, 16:41   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не знаю. Думаю что можно, но никогда не делал таких подлянок.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запуск от имени администратора зная логин и пароль AppData Общие вопросы Delphi 35 18.10.2013 17:26
Запуск приложения с правами Администратора tarakan1983 Общие вопросы Delphi 1 21.06.2013 21:24
Запуск программы от имени администратора не зная пароль digital-stream Операционные системы общие вопросы 0 21.11.2011 22:02
Запуск приложения с правами Администратора volod3000 Общие вопросы Delphi 13 25.04.2011 18:36
запуск программы под правами администратора jihot Общие вопросы Delphi 2 06.12.2010 16:27