powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / программно запустить exe файл с правами администратора
10 сообщений из 10, страница 1 из 1
программно запустить exe файл с правами администратора
    #39837930
yemets63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть программа, которая запускает некоторые процессы, и один из процессов является запускной файл exe, которая вносит в реестр изменения, допустим 0 или 1,
так вот, если ярлык программы в Windows настроен что запускать от Администратора, то все работает. А если запускаем от обычного, то конечно нет.

Как сказать программе, которая запускает процессы и программы, чтобы некоторые программы запускались от Администратора.

в Delphi.

Спас.
...
Рейтинг: 0 / 0
программно запустить exe файл с правами администратора
    #39837933
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63,

в манифесте программы указать, что необходим запуск от Администратора
...
Рейтинг: 0 / 0
программно запустить exe файл с правами администратора
    #39837945
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
запустить другую программу из-под администратора (если знаешь его пароль :)
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
function CreateProcessWithLogonW; external 'advapi32.dll' name 'CreateProcessWithLogonW';



procedure ExecAsDifferentUser(const AUserName: string;
                              const ADomain: string;
                              const APassword: string;
                              const ACommand: string;
                              out AProcessInf: TProcessInformation);
var
   bSuccess       : boolean;
   recStartupInfo : TStartupInfoW;
begin
   FillChar(recStartupInfo, SizeOf(recStartupInfo), #0);
   recStartupInfo.cb:= SizeOf(recStartupInfo);
   recStartupInfo.dwFlags:= STARTF_USESHOWWINDOW;
   recStartupInfo.wShowWindow:= 1;

   FillChar(AProcessInf, SizeOf(AProcessInf), #0);

   SetLastError(0);

   bSuccess := CreateProcessWithLogonW(
      StringToOleStr(AUserName),       // lpUsername,
      StringToOleStr(ADomain),         // lpDomain,
      StringToOleStr(APassword),       // lpPassword: PWideChar;
      LOGON_WITH_PROFILE,              // dwLogonFlags: DWORD;
      StringToOleStr(''),              // lpApplicationName,
      StringToOleStr(ACommand),        // lpCommandLine: PWideChar;
      0,                               // dwCreationFlags: DWORD;
      nil,                             // lpEnvironment: pointer;
      StringToOleStr(''),              // lpCurrentDirectory: PWideChar;
      @recStartupInfo,                 // lpStartupInfo: PStartupInfoW;
      @AProcessInf                     // lpProcessInformation: PProcessInformation
      );

   if not bSuccess then
      RaiseLastOSError();
end;
--------------------------------------------------------------------------------
var
   sCmd                : string;
   recProcessInfo      : TProcessInformation;
const
   ANY_EXE_PATH        = 'C:\Windows\Notepad.exe';
   ANY_EXE_PARAM       = 'C:\Windows\System32\tsadmin.msc';
begin
   sCmd := '"'+ANY_EXE_PATH+'" "'+ANY_EXE_PARAM+'"';

   ExecAsDifferentUser('Administrator',
                       ......
                       ......,
                       sCmd,
                       recProcessInfo);


...
Рейтинг: 0 / 0
программно запустить exe файл с правами администратора
    #39838052
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроик Семён,

А если на клиентской машине нет пользователя "Administrator"?
...
Рейтинг: 0 / 0
программно запустить exe файл с правами администратора
    #39838053
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот тут пример через ShellExecute (правда на сях).
...
Рейтинг: 0 / 0
программно запустить exe файл с правами администратора
    #39838072
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А на сях Win API отличается?
...
Рейтинг: 0 / 0
программно запустить exe файл с правами администратора
    #39838077
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GatorА на сях Win API отличается?

Винапи нет, но синтаксис отличается, а уровень вопроса вызывает сомнения в способности в нём разобраться.
...
Рейтинг: 0 / 0
программно запустить exe файл с правами администратора
    #39838080
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp,

Ну это эму надо книжки почитать и разобраться в именовании типов данных и структурах.
Короче, пусть он идёт лесом. 😃
...
Рейтинг: 0 / 0
программно запустить exe файл с правами администратора
    #39838089
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63,

можно в инсталлятор твоего программного комплекса воткнуть специальный сервис, который будет иметь высокие права, а другие программы будут к этому сервису обращаться с просьбой "запусти вот это приложение со своими (тоже высокими) правами, или сразу - "запиши в эту ветку HKLM такое-то значение". Этакая штатная дыра в безопасности. :).
...
Рейтинг: 0 / 0
программно запустить exe файл с правами администратора
    #39838091
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёёyemets63,

а другие программы будут к этому сервису обращаться с просьбой "запусти вот это приложение со своими (тоже высокими) правами

Петя и Валера будут в восторге!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / программно запустить exe файл с правами администратора
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]